enum.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package basic
  2. import (
  3. "fmt"
  4. "testing"
  5. "time"
  6. . "git.wecise.com/wecise/odbserver/odb"
  7. "git.wecise.com/wecise/odbserver/odb/test"
  8. "gitee.com/wecisecode/util/logger"
  9. "github.com/stretchr/testify/assert"
  10. "github.com/stretchr/testify/require"
  11. )
  12. type EnumTests struct {
  13. Test *testing.T
  14. g *Gutil
  15. }
  16. func EnumTest(t *testing.T) {
  17. g := test.TestG()
  18. t.Run("InitG", func(t *testing.T) {
  19. test := &EnumTests{Test: t, g: g}
  20. test.InitG()
  21. })
  22. t.Run("Class", func(t *testing.T) {
  23. test := &EnumTests{Test: t, g: g}
  24. test.Class()
  25. })
  26. t.Run("Data", func(t *testing.T) {
  27. test := &EnumTests{Test: t, g: g}
  28. test.Data()
  29. })
  30. time.Sleep(time.Duration(1) * time.Second)
  31. t.Run("Valid", func(t *testing.T) {
  32. test := &EnumTests{Test: t, g: g}
  33. test.Valid()
  34. })
  35. t.Run("Search", func(t *testing.T) {
  36. test := &EnumTests{Test: t, g: g}
  37. test.Search()
  38. })
  39. }
  40. func (t *EnumTests) InitG() {
  41. require.NotNil(t.Test, t.g)
  42. }
  43. func (t *EnumTests) Class() {
  44. _, _, err := t.g.Query(`
  45. create class if not exists /test/enum (
  46. v_varchar varchar,
  47. v_enum enum{
  48. "1":["computer", "服务器"],
  49. "2":["network", "网络设备"],
  50. "3":["software", "软件"]
  51. } '类型',
  52. indexes(v_varchar,v_enum),
  53. keys(v_varchar)
  54. );`)
  55. if err != nil {
  56. logger.Errorf("%v", err)
  57. }
  58. require.Nil(t.Test, err, fmt.Sprint(err))
  59. }
  60. func (t *EnumTests) Data() {
  61. var err error
  62. _, _, err = t.g.Query(`insert into /test/enum (v_varchar, v_enum ) values ('1', '1')`)
  63. _, _, err = t.g.Query(`insert into /test/enum (v_varchar, v_enum ) values ('2', 'network')`)
  64. _, _, err = t.g.Query(`insert into /test/enum (v_varchar, v_enum ) values ('3', '软件')`)
  65. if err != nil {
  66. logger.Errorf("%v", err)
  67. }
  68. require.Nil(t.Test, err, fmt.Sprint(err))
  69. }
  70. func (t *EnumTests) Valid() {
  71. rtn, _, err := t.g.Query(`select * from /test/enum`)
  72. if err != nil {
  73. logger.Errorf("%v", err)
  74. }
  75. if assert.Nil(t.Test, err) {
  76. if assert.NotNil(t.Test, rtn) {
  77. assert.Equal(t.Test, len(rtn), 3, "they should be equal")
  78. }
  79. }
  80. }
  81. func (t *EnumTests) Search() {
  82. var err error
  83. var rtn []map[string]interface{}
  84. rtn, _, err = t.g.Query(`select count(*) as count from /test/enum where v_enum = 1`)
  85. if err != nil {
  86. logger.Errorf("%v", err)
  87. }
  88. if assert.Nil(t.Test, err) {
  89. if assert.NotNil(t.Test, rtn) {
  90. assert.Equal(t.Test, int64(1), rtn[0]["count"].(int64), fmt.Sprintf("not find v_enum = %v", "1"))
  91. }
  92. }
  93. rtn, _, err = t.g.Query(`select count(*) as count from /test/enum where v_enum = 'network'`)
  94. if err != nil {
  95. logger.Errorf("%v", err)
  96. }
  97. if assert.Nil(t.Test, err) {
  98. if assert.NotNil(t.Test, rtn) {
  99. assert.Equal(t.Test, int64(1), rtn[0]["count"].(int64), fmt.Sprintf("not find v_enum = %v", "network"))
  100. }
  101. }
  102. rtn, _, err = t.g.Query(`select count(*) as count from /test/enum where v_enum = '软件'`)
  103. if err != nil {
  104. logger.Errorf("%v", err)
  105. }
  106. if assert.Nil(t.Test, err) {
  107. if assert.NotNil(t.Test, rtn) {
  108. assert.Equal(t.Test, int64(1), rtn[0]["count"].(int64), fmt.Sprintf("not find v_enum = %v", "软件"))
  109. }
  110. }
  111. }