############################################################################### # # tkt-3e783eecbe.eagle -- # # Written by Joe Mistachkin. # Released to the public domain, use at your own risk! # ############################################################################### package require Eagle package require Eagle.Library package require Eagle.Test runTestPrologue ############################################################################### package require System.Data.SQLite.Test runSQLiteTestPrologue ############################################################################### runTest {test tkt-3e783eecbe-1.1 {To Julian Day w/o OLE Automation} -setup { set minDateTime [object invoke -create -alias DateTime MinValue] set maxDateTime [object invoke -create -alias DateTime MaxValue] set dateTimeValues [list $minDateTime "0099-12-31 00:00:00" \ "0100-01-01 00:00:00" $maxDateTime] } -body { set results [list] foreach dateTimeValue $dateTimeValues { if {$dateTimeValue ni [info objects]} then { set dateTimeValue [object invoke \ -create DateTime ParseExact $dateTimeValue \ [getDateTimeFormat] null] set dateTimeValue [object invoke -create -alias \ DateTime SpecifyKind $dateTimeValue Utc] } set code [catch { object invoke System.Data.SQLite.SQLiteConvert ToJulianDay \ $dateTimeValue } result] if {$code != 0} then { regexp -- {---> (.*?):} $result result result regexp -- {(System\..*?):} $result result result } lappend results [list [$dateTimeValue ToString [getDateTimeFormat]] \ $code $result] } set results } -cleanup { unset -nocomplain code result results dateTimeValue dateTimeValues \ maxDateTime minDateTime } -constraints {eagle System.Data.SQLite} -result {{{0001-01-01 00:00:00} 0\ 1721425.5} {{0099-12-31 00:00:00Z} 0 1757583.5} {{0100-01-01 00:00:00Z} 0\ 1757584.5} {{9999-12-31 23:59:59.9999999} 0 5373484.49999999}}} ############################################################################### runTest {test tkt-3e783eecbe-1.2 {From Julian Day w/o OLE Automation} -setup { set minDoubleValue [object invoke -create -alias Double MinValue] set maxDoubleValue [object invoke -create -alias Double MaxValue] set doubleValues [list \ $minDoubleValue -1.0 0.0 1.0 1721425.5 1757583.5 2451910.5 \ 2456962.0 5373484.49999998 5373484.49999999 $maxDoubleValue] } -body { set results [list] foreach doubleValue $doubleValues { if {$doubleValue ni [info objects]} then { set doubleValue [object invoke \ -create -alias Double Parse $doubleValue] } set code [catch { set dateTimeValue [object invoke -create -alias \ System.Data.SQLite.SQLiteConvert ToDateTime $doubleValue Utc] $dateTimeValue ToString [getDateTimeFormat] } result] if {$code != 0} then { regexp -- {---> (.*?):} $result result result regexp -- {(System\..*?):} $result result result } lappend results [list [$doubleValue ToString] $code $result] } set results } -cleanup { unset -nocomplain code result results dateTimeValue doubleValue \ doubleValues maxDoubleValue minDoubleValue } -constraints {eagle System.Data.SQLite} -result {{-1.79769313486232E+308 1\ System.ArgumentException} {-1 1 System.ArgumentException} {0 1\ System.ArgumentException} {1 1 System.ArgumentException} {1721425.5 0\ {0001-01-01 00:00:00Z}} {1757583.5 0 {0099-12-31 00:00:00Z}} {2451910.5 0\ {2001-01-01 00:00:00Z}} {2456962 0 {2014-10-31 12:00:00Z}} {5373484.49999998 0\ {9999-12-31 23:59:59.998Z}} {5373484.49999999 0 {9999-12-31 23:59:59.999Z}}\ {1.79769313486232E+308 1 System.ArgumentException}}} ############################################################################### runTest {test tkt-3e783eecbe-1.3 {Julian Day storage} -setup { set doubleValues [list \ -1.0 0.0 1.0 1721425.5 1757583.5 2451910.5 2456962.0 \ 5373484.49999998 5373484.49999999] setupDb [set fileName tkt-3e783eecbe-1.3.db] "" JulianDay } -body { sql execute $db "CREATE TABLE t1(x INTEGER, y DATETIME);" set i 1 set results [list] foreach doubleValue $doubleValues { if {$doubleValue ni [info objects]} then { set doubleValue [object invoke \ -create -alias Double Parse $doubleValue] } set code [catch { sql execute $db "INSERT INTO t1 (x, y) VALUES(?, ?);" \ [list param1 Int32 $i] [list param2 Double $doubleValue] sql execute -execute reader -format list -datetimeformat \ [getDateTimeFormat] $db "SELECT y FROM t1 WHERE x = ?;" \ [list param1 Int32 $i] } result] if {$code != 0} then { regexp -- {---> (.*?):} $result result result regexp -- {(System\..*?):} $result result result } lappend results [list [$doubleValue ToString] $code $result] incr i } set results } -cleanup { unset -nocomplain code result results i dateTimeValue doubleValue \ doubleValues maxDoubleValue minDoubleValue cleanupDb $fileName unset -nocomplain db fileName } -constraints \ {eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \ {{-1 1 System.ArgumentException} {0 1 System.ArgumentException} {1 1\ System.ArgumentException} {1721425.5 0 {{0001-01-01 00:00:00}}} {1757583.5 0\ {{0099-12-31 00:00:00}}} {2451910.5 0 {{2001-01-01 00:00:00}}} {2456962 0\ {{2014-10-31 12:00:00}}} {5373484.49999998 0 {{9999-12-31 23:59:59.998}}}\ {5373484.49999999 0 {{9999-12-31 23:59:59.999}}}}} ############################################################################### runSQLiteTestEpilogue runTestEpilogue