package reduce_test import ( "fmt" "reflect" "testing" "time" "git.wecise.com/wecise/odbserver/odb" "git.wecise.com/wecise/odbserver/odb/gapi" "git.wecise.com/wecise/odbserver/odb/query" ) func TestInitValues(t *testing.T) { conf := odb.ODBConfig("0.0.0") odb.ODB = odb.NewOMDB(conf) var err error defer func() { if err != nil { t.Error(err) } }() keyspace := "ootest" classname := "/test/initvalues" mql_createclass := `` mql_cleardata := `` id := fmt.Sprint(time.Now().UnixNano()) newvalues := map[string]interface{}{id: id} g, e := gapi.GetG(keyspace) if e != nil { err = e return } cstru := g.Class(classname) _, _, e = g.Query(mql_createclass) if e != nil { err = e return } _, _, e = g.Query(mql_cleardata) if e != nil { err = e return } _, e = g.WriteObjectValues(cstru, id, newvalues, false) if e != nil { err = e return } lastrow, e := g.GetLastRow(cstru, id, &query.QueryMeta{AsteriskNoBucket: true}, true) if e != nil { err = e return } initrow := map[string]interface{}{} e = g.InitValues(cstru, initrow) if e != nil { err = e return } if !func() bool { if len(lastrow) != len(initrow) { return false } for k, v := range lastrow { if v == nil && initrow[k] != nil || v != nil && initrow[k] == nil { return false } if v != nil && initrow[k] != nil { if reflect.TypeOf(v) != reflect.TypeOf(initrow[k]) { return false } switch xv := initrow[k].(type) { case int: if xv != v.(int) { return false } case int64: if xv != v.(int64) { return false } case float32: if xv != v.(float32) { return false } case float64: if xv != v.(float64) { return false } case string: if xv != v.(string) { return false } case bool: if xv != v.(bool) { return false } } } } return true }() { err = fmt.Errorf("读出默认值和内存默认值不一致, \nlastrow=%#v, \ninitrow=%#v", lastrow, initrow) return } }