###############################################################################
#
# tkt-a7d04fb111.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
###############################################################################
set rawDateTimeValue "2015-02-18 00:00:00.0000000"
###############################################################################
runTest {test tkt-a7d04fb111-1.1 {Bind DateTime Utc Ticks} -setup {
setupDb [set fileName tkt-a7d04fb111-1.1.db] "" Ticks Utc \
BindDateTimeWithKind
} -body {
set dateTimeValue(0) [object invoke \
-create DateTime ParseExact $rawDateTimeValue \
[getDateTimeFormat] null]
set dateTimeValue(1) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Utc]
set dateTimeValue(2) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Local]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(0)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(1)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(2)]]
lappend result [expr {[lindex $result 0] == [lindex $result 1]}]
lappend result [expr {[lindex $result 0] == [lindex $result 2]}]
lappend result [expr {[lindex $result 1] == [lindex $result 2]}]
} -cleanup {
cleanupDb $fileName
unset -nocomplain result dateTimeValue db fileName
} -constraints \
{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \
{635598144000000000 635598144000000000 635598432000000000 True False False}}
###############################################################################
runTest {test tkt-a7d04fb111-1.2 {Bind DateTime Local Ticks} -setup {
setupDb [set fileName tkt-a7d04fb111-1.2.db] "" Ticks Local \
BindDateTimeWithKind
} -body {
set dateTimeValue(0) [object invoke \
-create DateTime ParseExact $rawDateTimeValue \
[getDateTimeFormat] null]
set dateTimeValue(1) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Utc]
set dateTimeValue(2) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Local]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(0)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(1)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(2)]]
lappend result [expr {[lindex $result 0] == [lindex $result 1]}]
lappend result [expr {[lindex $result 0] == [lindex $result 2]}]
lappend result [expr {[lindex $result 1] == [lindex $result 2]}]
} -cleanup {
cleanupDb $fileName
unset -nocomplain result dateTimeValue db fileName
} -constraints \
{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \
{635598144000000000 635597856000000000 635598144000000000 False True False}}
###############################################################################
runTest {test tkt-a7d04fb111-1.3 {Bind DateTime Utc ISO8601} -setup {
setupDb [set fileName tkt-a7d04fb111-1.3.db] "" ISO8601 Utc \
BindDateTimeWithKind
} -body {
set dateTimeValue(0) [object invoke \
-create DateTime ParseExact $rawDateTimeValue \
[getDateTimeFormat] null]
set dateTimeValue(1) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Utc]
set dateTimeValue(2) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Local]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(0)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(1)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(2)]]
lappend result [expr {[lindex $result 0] eq [lindex $result 1]}]
lappend result [expr {[lindex $result 0] eq [lindex $result 2]}]
lappend result [expr {[lindex $result 1] eq [lindex $result 2]}]
} -cleanup {
cleanupDb $fileName
unset -nocomplain result dateTimeValue db fileName
} -constraints \
{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \
{{2015-02-18 00:00:00Z} {2015-02-18 00:00:00Z} {2015-02-18 08:00:00Z} True\
False False}}
###############################################################################
runTest {test tkt-a7d04fb111-1.4 {Bind DateTime Local ISO8601} -setup {
setupDb [set fileName tkt-a7d04fb111-1.4.db] "" ISO8601 Local \
BindDateTimeWithKind
} -body {
set dateTimeValue(0) [object invoke \
-create DateTime ParseExact $rawDateTimeValue \
[getDateTimeFormat] null]
set dateTimeValue(1) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Utc]
set dateTimeValue(2) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Local]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(0)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(1)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(2)]]
lappend result [expr {[lindex $result 0] eq [lindex $result 1]}]
lappend result [expr {[lindex $result 0] eq [lindex $result 2]}]
lappend result [expr {[lindex $result 1] eq [lindex $result 2]}]
} -cleanup {
cleanupDb $fileName
unset -nocomplain result dateTimeValue db fileName
} -constraints \
{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \
{{2015-02-18 00:00:00} {2015-02-17 16:00:00} {2015-02-18 00:00:00} False True\
False}}
###############################################################################
runTest {test tkt-a7d04fb111-1.5 {Bind DateTime Utc JulianDay} -setup {
setupDb [set fileName tkt-a7d04fb111-1.5.db] "" JulianDay Utc \
BindDateTimeWithKind
} -body {
set dateTimeValue(0) [object invoke \
-create DateTime ParseExact $rawDateTimeValue \
[getDateTimeFormat] null]
set dateTimeValue(1) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Utc]
set dateTimeValue(2) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Local]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(0)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(1)]]
lappend result [expr {round2([sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(2)]], 2)}]
lappend result [expr {[lindex $result 0] == [lindex $result 1]}]
lappend result [expr {[lindex $result 0] == [lindex $result 2]}]
lappend result [expr {[lindex $result 1] == [lindex $result 2]}]
} -cleanup {
cleanupDb $fileName
unset -nocomplain result dateTimeValue db fileName
} -constraints \
{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \
{2457071.5 2457071.5 2457071.83 True False False}}
###############################################################################
runTest {test tkt-a7d04fb111-1.6 {Bind DateTime Local JulianDay} -setup {
setupDb [set fileName tkt-a7d04fb111-1.6.db] "" JulianDay Local \
BindDateTimeWithKind
} -body {
set dateTimeValue(0) [object invoke \
-create DateTime ParseExact $rawDateTimeValue \
[getDateTimeFormat] null]
set dateTimeValue(1) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Utc]
set dateTimeValue(2) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Local]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(0)]]
lappend result [expr {round2([sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(1)]], 2)}]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(2)]]
lappend result [expr {[lindex $result 0] == [lindex $result 1]}]
lappend result [expr {[lindex $result 0] == [lindex $result 2]}]
lappend result [expr {[lindex $result 1] == [lindex $result 2]}]
} -cleanup {
cleanupDb $fileName
unset -nocomplain result dateTimeValue db fileName
} -constraints \
{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \
{2457071.5 2457071.17 2457071.5 False True False}}
###############################################################################
runTest {test tkt-a7d04fb111-1.7 {Bind DateTime Utc UnixEpoch} -setup {
setupDb [set fileName tkt-a7d04fb111-1.7.db] "" UnixEpoch Utc \
BindDateTimeWithKind
} -body {
set dateTimeValue(0) [object invoke \
-create DateTime ParseExact $rawDateTimeValue \
[getDateTimeFormat] null]
set dateTimeValue(1) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Utc]
set dateTimeValue(2) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Local]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(0)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(1)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(2)]]
lappend result [expr {[lindex $result 0] == [lindex $result 1]}]
lappend result [expr {[lindex $result 0] == [lindex $result 2]}]
lappend result [expr {[lindex $result 1] == [lindex $result 2]}]
} -cleanup {
cleanupDb $fileName
unset -nocomplain result dateTimeValue db fileName
} -constraints \
{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \
{1424217600 1424217600 1424246400 True False False}}
###############################################################################
runTest {test tkt-a7d04fb111-1.8 {Bind DateTime Local UnixEpoch} -setup {
setupDb [set fileName tkt-a7d04fb111-1.8.db] "" UnixEpoch Local \
BindDateTimeWithKind
} -body {
set dateTimeValue(0) [object invoke \
-create DateTime ParseExact $rawDateTimeValue \
[getDateTimeFormat] null]
set dateTimeValue(1) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Utc]
set dateTimeValue(2) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Local]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(0)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(1)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(2)]]
lappend result [expr {[lindex $result 0] == [lindex $result 1]}]
lappend result [expr {[lindex $result 0] == [lindex $result 2]}]
lappend result [expr {[lindex $result 1] == [lindex $result 2]}]
} -cleanup {
cleanupDb $fileName
unset -nocomplain result dateTimeValue db fileName
} -constraints \
{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \
{1424217600 1424188800 1424217600 False True False}}
###############################################################################
runTest {test tkt-a7d04fb111-1.9 {Bind DateTime Utc Invariant} -setup {
setupDb [set fileName tkt-a7d04fb111-1.9.db] "" InvariantCulture Utc \
BindDateTimeWithKind
} -body {
set dateTimeValue(0) [object invoke \
-create DateTime ParseExact $rawDateTimeValue \
[getDateTimeFormat] null]
set dateTimeValue(1) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Utc]
set dateTimeValue(2) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Local]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(0)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(1)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(2)]]
lappend result [expr {[lindex $result 0] eq [lindex $result 1]}]
lappend result [expr {[lindex $result 0] eq [lindex $result 2]}]
lappend result [expr {[lindex $result 1] eq [lindex $result 2]}]
} -cleanup {
cleanupDb $fileName
unset -nocomplain result dateTimeValue db fileName
} -constraints \
{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \
{2015-02-18T00:00:00.0000000 2015-02-18T00:00:00.0000000Z\
2015-02-18T08:00:00.0000000Z False False False}}
###############################################################################
runTest {test tkt-a7d04fb111-1.10 {Bind DateTime Local Invariant} -setup {
setupDb [set fileName tkt-a7d04fb111-1.10.db] "" InvariantCulture Local \
BindDateTimeWithKind
} -body {
set dateTimeValue(0) [object invoke \
-create DateTime ParseExact $rawDateTimeValue \
[getDateTimeFormat] null]
set dateTimeValue(1) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Utc]
set dateTimeValue(2) [object invoke -create -alias \
DateTime SpecifyKind $dateTimeValue(0) Local]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(0)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(1)]]
lappend result [sql execute -execute scalar $db "SELECT ?;" \
[list param1 DateTime $dateTimeValue(2)]]
lappend result [expr {[lindex $result 0] eq [lindex $result 1]}]
lappend result [expr {[lindex $result 0] eq [lindex $result 2]}]
lappend result [expr {[lindex $result 1] eq [lindex $result 2]}]
} -cleanup {
cleanupDb $fileName
unset -nocomplain result dateTimeValue db fileName
} -constraints \
{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \
{2015-02-18T00:00:00.0000000 2015-02-17T16:00:00.0000000-08:00\
2015-02-18T00:00:00.0000000-08:00 False False False}}
###############################################################################
unset -nocomplain rawDateTimeValue
###############################################################################
runSQLiteTestEpilogue
runTestEpilogue