package basic import ( "fmt" "testing" "time" . "git.wecise.com/wecise/odbserver/odb" "git.wecise.com/wecise/odbserver/odb/test" "gitee.com/wecisecode/util/logger" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) type EnumTests struct { Test *testing.T g *Gutil } func EnumTest(t *testing.T) { g := test.TestG() t.Run("InitG", func(t *testing.T) { test := &EnumTests{Test: t, g: g} test.InitG() }) t.Run("Class", func(t *testing.T) { test := &EnumTests{Test: t, g: g} test.Class() }) t.Run("Data", func(t *testing.T) { test := &EnumTests{Test: t, g: g} test.Data() }) time.Sleep(time.Duration(1) * time.Second) t.Run("Valid", func(t *testing.T) { test := &EnumTests{Test: t, g: g} test.Valid() }) t.Run("Search", func(t *testing.T) { test := &EnumTests{Test: t, g: g} test.Search() }) } func (t *EnumTests) InitG() { require.NotNil(t.Test, t.g) } func (t *EnumTests) Class() { _, _, err := t.g.Query(` create class if not exists /test/enum ( v_varchar varchar, v_enum enum{ "1":["computer", "服务器"], "2":["network", "网络设备"], "3":["software", "软件"] } '类型', indexes(v_varchar,v_enum), keys(v_varchar) );`) if err != nil { logger.Errorf("%v", err) } require.Nil(t.Test, err, fmt.Sprint(err)) } func (t *EnumTests) Data() { var err error _, _, err = t.g.Query(`insert into /test/enum (v_varchar, v_enum ) values ('1', '1')`) _, _, err = t.g.Query(`insert into /test/enum (v_varchar, v_enum ) values ('2', 'network')`) _, _, err = t.g.Query(`insert into /test/enum (v_varchar, v_enum ) values ('3', '软件')`) if err != nil { logger.Errorf("%v", err) } require.Nil(t.Test, err, fmt.Sprint(err)) } func (t *EnumTests) Valid() { rtn, _, err := t.g.Query(`select * from /test/enum`) if err != nil { logger.Errorf("%v", err) } if assert.Nil(t.Test, err) { if assert.NotNil(t.Test, rtn) { assert.Equal(t.Test, len(rtn), 3, "they should be equal") } } } func (t *EnumTests) Search() { var err error var rtn []map[string]interface{} rtn, _, err = t.g.Query(`select count(*) as count from /test/enum where v_enum = 1`) if err != nil { logger.Errorf("%v", err) } if assert.Nil(t.Test, err) { if assert.NotNil(t.Test, rtn) { assert.Equal(t.Test, int64(1), rtn[0]["count"].(int64), fmt.Sprintf("not find v_enum = %v", "1")) } } rtn, _, err = t.g.Query(`select count(*) as count from /test/enum where v_enum = 'network'`) if err != nil { logger.Errorf("%v", err) } if assert.Nil(t.Test, err) { if assert.NotNil(t.Test, rtn) { assert.Equal(t.Test, int64(1), rtn[0]["count"].(int64), fmt.Sprintf("not find v_enum = %v", "network")) } } rtn, _, err = t.g.Query(`select count(*) as count from /test/enum where v_enum = '软件'`) if err != nil { logger.Errorf("%v", err) } if assert.Nil(t.Test, err) { if assert.NotNil(t.Test, rtn) { assert.Equal(t.Test, int64(1), rtn[0]["count"].(int64), fmt.Sprintf("not find v_enum = %v", "软件")) } } }