Skip to content

Commit c9b689a

Browse files
committed
added time test (broken)
1 parent fb4ae10 commit c9b689a

File tree

1 file changed

+81
-25
lines changed

1 file changed

+81
-25
lines changed

driver_test.go

Lines changed: 81 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"os"
1010
"strings"
1111
"testing"
12+
"time"
1213
)
1314

1415
var (
@@ -431,34 +432,89 @@ func _string(db *DBTest) {
431432
}
432433

433434
func TestDateTime(t *testing.T) {
434-
runTests(t, "TestDateTime", _dateTime)
435-
}
436-
437-
func _dateTime(db *DBTest) {
438-
db.mustExec("DROP TABLE IF EXISTS test")
439-
440-
types := [...]string{"DATE", "DATETIME"}
441-
in := [...]string{"2012-06-14", "2011-11-20 21:27:37"}
442-
var out string
443-
var rows *sql.Rows
444-
445-
for i, v := range types {
446-
db.mustExec("CREATE TABLE test (value " + v + ") CHARACTER SET utf8 COLLATE utf8_unicode_ci")
447-
448-
db.mustExec("INSERT INTO test VALUES (?)", in[i])
449-
450-
rows = db.mustQuery("SELECT value FROM test")
451-
if rows.Next() {
452-
rows.Scan(&out)
453-
if in[i] != out {
454-
db.Errorf("%s: %s != %s", v, in[i], out)
435+
var modes = [2]string{"text", "binary"}
436+
var types = [2]string{"DATE", "DATETIME"}
437+
var tests = [2][]struct {
438+
in interface{}
439+
sOut string
440+
tOut time.Time
441+
tIsZero bool
442+
}{
443+
{
444+
{"2012-06-14", "2012-06-14", time.Date(2012, 6, 14, 0, 0, 0, 0, time.UTC), false},
445+
{"0000-00-00", "0000-00-00", time.Time{}, true},
446+
{time.Date(2012, 6, 14, 0, 0, 0, 0, time.UTC), "2012-06-14", time.Date(2012, 6, 14, 0, 0, 0, 0, time.UTC), false},
447+
{time.Time{}, "0000-00-00", time.Time{}, true},
448+
},
449+
{
450+
{"2011-11-20 21:27:37", "2011-11-20 21:27:37", time.Date(2011, 11, 20, 21, 27, 37, 0, time.UTC), false},
451+
{"0000-00-00 00:00:00", "0000-00-00 00:00:00", time.Time{}, true},
452+
{time.Date(2011, 11, 20, 21, 27, 37, 0, time.UTC), "2011-11-20 21:27:37", time.Date(2011, 11, 20, 21, 27, 37, 0, time.UTC), false},
453+
{time.Time{}, "0000-00-00 00:00:00", time.Time{}, true},
454+
},
455+
}
456+
var sOut string
457+
var tOut time.Time
458+
459+
var rows [2]*sql.Rows
460+
var err error
461+
var resultType string
462+
463+
testTime := func(db *DBTest) {
464+
defer db.mustExec("DROP TABLE IF EXISTS test")
465+
for i, v := range types {
466+
db.mustExec("DROP TABLE IF EXISTS test")
467+
db.mustExec("CREATE TABLE test (value " + v + ") CHARACTER SET utf8 COLLATE utf8_unicode_ci")
468+
for j := range tests[i] {
469+
db.mustExec("INSERT INTO test VALUES (?)", tests[i][j].in)
470+
// string
471+
rows[0] = db.mustQuery("SELECT value FROM test") // text
472+
rows[1] = db.mustQuery("SELECT value FROM test WHERE 1 = ?", 1) // binary
473+
474+
for k := range rows {
475+
if rows[k].Next() {
476+
if resultType == "string" {
477+
err = rows[k].Scan(&sOut)
478+
if err != nil {
479+
db.Errorf("%s (%s %s): %v",
480+
v, resultType, modes[k], err)
481+
} else if tests[i][j].sOut != sOut {
482+
db.Errorf("%s (%s %s): %s != %s",
483+
v, resultType, modes[k],
484+
tests[i][j].sOut, sOut)
485+
}
486+
} else {
487+
err = rows[k].Scan(&tOut)
488+
if err != nil {
489+
t.Errorf("%s (%s %s): %v",
490+
v, resultType, modes[k], err)
491+
} else if tests[i][j].tOut != tOut || tests[i][j].tIsZero != tOut.IsZero() {
492+
t.Errorf("%s (%s %s): %s [%t] != %s [%t]",
493+
v, resultType, modes[k],
494+
tests[i][j].tOut, tests[i][j].tIsZero,
495+
tOut, tOut.IsZero())
496+
}
497+
}
498+
} else {
499+
err = rows[k].Err()
500+
if err != nil {
501+
db.Errorf("%s (%s %s): %v", v, resultType, modes[k], err)
502+
} else {
503+
db.Errorf("%s (%s %s): no data", v, resultType, modes[k])
504+
}
505+
}
506+
}
455507
}
456-
} else {
457-
db.Errorf("%s: no data", v)
458508
}
459-
460-
db.mustExec("DROP TABLE IF EXISTS test")
461509
}
510+
511+
resultType = "string"
512+
runTests(t, "TestDateTime", testTime)
513+
oldDsn := dsn
514+
dsn = dsn + "&parseTime=true"
515+
resultType = "time.Time"
516+
runTests(t, "TestDateTime", testTime)
517+
dsn = oldDsn
462518
}
463519

464520
func TestNULL(t *testing.T) {

0 commit comments

Comments
 (0)