tidy up null value tests and avoid mymysql and postgres drive time handling

This commit is contained in:
Nash Tsai 2013-12-25 12:19:00 +08:00
parent 6b4eca8204
commit aea4095558
2 changed files with 50 additions and 46 deletions

View File

@ -3156,45 +3156,51 @@ func testNullValue(engine *Engine, t *testing.T) {
// t.Error(errors.New(fmt.Sprintf("inserted value unmatch: [%v]", *nullDataGet.Complex128Ptr))) // t.Error(errors.New(fmt.Sprintf("inserted value unmatch: [%v]", *nullDataGet.Complex128Ptr)))
// } // }
/*if (*nullDataGet.TimePtr).Unix() != (*nullDataUpdate.TimePtr).Unix() { // !nashtsai! skipped mymysql test due to driver will round up time caused inaccuracy comparison
t.Error(errors.New(fmt.Sprintf("inserted value unmatch: [%v]:[%v]", *nullDataGet.TimePtr, *nullDataUpdate.TimePtr))) // skipped postgres test due to postgres driver doesn't read time.Time's timzezone info when stored in the db
} else { // mysql and sqlite3 seem have done this correctly by storing datatime in UTC timezone, I think postgres driver
// !nashtsai! mymysql driver will failed this test case, due the time is roundup to nearest second, I would considered this is a bug in mymysql driver // prefer using timestamp with timezone to sovle the issue
fmt.Printf("time value: [%v]:[%v]", *nullDataGet.TimePtr, *nullDataUpdate.TimePtr) if engine.DriverName != POSTGRES || engine.DriverName != MYMYSQL {
fmt.Println() if (*nullDataGet.TimePtr).Unix() != (*nullDataUpdate.TimePtr).Unix() {
}*/ t.Error(errors.New(fmt.Sprintf("inserted value unmatch: [%v]:[%v]", *nullDataGet.TimePtr, *nullDataUpdate.TimePtr)))
// -- } else {
// !nashtsai! mymysql driver will failed this test case, due the time is roundup to nearest second, I would considered this is a bug in mymysql driver
// inserted value unmatch: [2013-12-25 12:12:45 +0800 CST]:[2013-12-25 12:12:44.878903653 +0800 CST]
fmt.Printf("time value: [%v]:[%v]", *nullDataGet.TimePtr, *nullDataUpdate.TimePtr)
fmt.Println()
}
}
// update to null values // update to null values
/*nullDataUpdate = NullData{} nullDataUpdate = NullData{}
cnt, err = engine.Id(nullData.Id).Update(&nullDataUpdate) cnt, err = engine.Id(nullData.Id).Cols("string_ptr").Update(&nullDataUpdate)
if err != nil { if err != nil {
t.Error(err) t.Error(err)
panic(err) panic(err)
} else if cnt != 1 { } else if cnt != 1 {
t.Error(errors.New("update count == 0, how can this happen!?")) t.Error(errors.New("update count == 0, how can this happen!?"))
return return
}*/ }
// verify get values // verify get values
/*nullDataGet = NullData{} nullDataGet = NullData{}
has, err = engine.Id(nullData.Id).Get(&nullDataGet) has, err = engine.Id(nullData.Id).Get(&nullDataGet)
if err != nil { if err != nil {
t.Error(err) t.Error(err)
return return
} else if !has { } else if !has {
t.Error(errors.New("ID not found")) t.Error(errors.New("ID not found"))
return return
} }
fmt.Printf("%+v", nullDataGet) fmt.Printf("%+v", nullDataGet)
fmt.Println() fmt.Println()
if nullDataGet.StringPtr != nil {
t.Error(errors.New(fmt.Sprintf("not null value: [%v]", *nullDataGet.StringPtr)))
}
if nullDataGet.StringPtr != nil {
t.Error(errors.New(fmt.Sprintf("not null value: [%v]", *nullDataGet.StringPtr)))
}
/*
if nullDataGet.StringPtr2 != nil { if nullDataGet.StringPtr2 != nil {
t.Error(errors.New(fmt.Sprintf("not null value: [%v]", *nullDataGet.StringPtr2))) t.Error(errors.New(fmt.Sprintf("not null value: [%v]", *nullDataGet.StringPtr2)))
} }

View File

@ -12,8 +12,6 @@ CREATE DATABASE IF NOT EXISTS xorm_test CHARACTER SET
utf8 COLLATE utf8_general_ci; utf8 COLLATE utf8_general_ci;
*/ */
var mysqlShowTestSql bool = true
func TestMysql(t *testing.T) { func TestMysql(t *testing.T) {
err := mysqlDdlImport() err := mysqlDdlImport()
if err != nil { if err != nil {
@ -27,10 +25,10 @@ func TestMysql(t *testing.T) {
t.Error(err) t.Error(err)
return return
} }
engine.ShowSQL = mysqlShowTestSql engine.ShowSQL = showTestSql
engine.ShowErr = mysqlShowTestSql engine.ShowErr = showTestSql
engine.ShowWarn = mysqlShowTestSql engine.ShowWarn = showTestSql
engine.ShowDebug = mysqlShowTestSql engine.ShowDebug = showTestSql
testAll(engine, t) testAll(engine, t)
testAll2(engine, t) testAll2(engine, t)
@ -51,10 +49,10 @@ func TestMysqlWithCache(t *testing.T) {
return return
} }
engine.SetDefaultCacher(NewLRUCacher(NewMemoryStore(), 1000)) engine.SetDefaultCacher(NewLRUCacher(NewMemoryStore(), 1000))
engine.ShowSQL = mysqlShowTestSql engine.ShowSQL = showTestSql
engine.ShowErr = mysqlShowTestSql engine.ShowErr = showTestSql
engine.ShowWarn = mysqlShowTestSql engine.ShowWarn = showTestSql
engine.ShowDebug = mysqlShowTestSql engine.ShowDebug = showTestSql
testAll(engine, t) testAll(engine, t)
testAll2(engine, t) testAll2(engine, t)
@ -69,10 +67,10 @@ func mysqlDdlImport() error {
if err != nil { if err != nil {
return err return err
} }
engine.ShowSQL = mysqlShowTestSql engine.ShowSQL = showTestSql
engine.ShowErr = mysqlShowTestSql engine.ShowErr = showTestSql
engine.ShowWarn = mysqlShowTestSql engine.ShowWarn = showTestSql
engine.ShowDebug = mysqlShowTestSql engine.ShowDebug = showTestSql
sqlResults, _ := engine.Import("tests/mysql_ddl.sql") sqlResults, _ := engine.Import("tests/mysql_ddl.sql")
engine.LogDebug("sql results: %v", sqlResults) engine.LogDebug("sql results: %v", sqlResults)