// Go MySQL Driver - A MySQL-Driver for Go's database/sql package // // Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved. // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at http://mozilla.org/MPL/2.0/. package mariadb import ( "database/sql" "database/sql/driver" "testing" "time" ) var ( // Check implementation of interfaces _ driver.Valuer = NullTime{} _ sql.Scanner = (*NullTime)(nil) ) func TestScanNullTime(t *testing.T) { var scanTests = []struct { in interface{} error bool valid bool time time.Time }{ {tDate, false, true, tDate}, {sDate, false, true, tDate}, {[]byte(sDate), false, true, tDate}, {tDateTime, false, true, tDateTime}, {sDateTime, false, true, tDateTime}, {[]byte(sDateTime), false, true, tDateTime}, {tDate0, false, true, tDate0}, {sDate0, false, true, tDate0}, {[]byte(sDate0), false, true, tDate0}, {sDateTime0, false, true, tDate0}, {[]byte(sDateTime0), false, true, tDate0}, {"", true, false, tDate0}, {"1234", true, false, tDate0}, {0, true, false, tDate0}, } var nt = NullTime{} var err error for _, tst := range scanTests { err = nt.Scan(tst.in) if (err != nil) != tst.error { t.Errorf("%v: expected error status %t, got %t", tst.in, tst.error, (err != nil)) } if nt.Valid != tst.valid { t.Errorf("%v: expected valid status %t, got %t", tst.in, tst.valid, nt.Valid) } if nt.Time != tst.time { t.Errorf("%v: expected time %v, got %v", tst.in, tst.time, nt.Time) } } }