ast_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package xsql
  2. import (
  3. "fmt"
  4. "reflect"
  5. "testing"
  6. )
  7. func Test_MessageValTest(t *testing.T) {
  8. var tests = []struct {
  9. key string
  10. message Message
  11. exptV interface{}
  12. exptOk bool
  13. }{
  14. {
  15. key: "key1",
  16. message: Message{
  17. "key1": "val1",
  18. "key2": "val2",
  19. },
  20. exptV: "val1",
  21. exptOk: true,
  22. },
  23. {
  24. key: "key0",
  25. message: Message{
  26. "key1": "val1",
  27. "key2": "val2",
  28. },
  29. exptV: nil,
  30. exptOk: false,
  31. },
  32. {
  33. key: "key1",
  34. message: Message{
  35. "Key1": "val1",
  36. "key2": "val2",
  37. },
  38. exptV: "val1",
  39. exptOk: true,
  40. },
  41. {
  42. key: "key1" + COLUMN_SEPARATOR + "subkey",
  43. message: Message{
  44. "Key1": "val1",
  45. "subkey": "subval",
  46. },
  47. exptV: "subval",
  48. exptOk: true,
  49. },
  50. {
  51. key: "192.168.0.1",
  52. message: Message{
  53. "Key1": "val1",
  54. "192.168.0.1": "000",
  55. },
  56. exptV: "000",
  57. exptOk: true,
  58. },
  59. {
  60. key: "parent" + COLUMN_SEPARATOR + "child",
  61. message: Message{
  62. "key1": "val1",
  63. "child": "child_val",
  64. "parent.child": "demo",
  65. },
  66. exptV: "child_val",
  67. exptOk: true,
  68. },
  69. {
  70. key: "parent.child",
  71. message: Message{
  72. "key1": "val1",
  73. "child": "child_val",
  74. "parent.child": "demo",
  75. },
  76. exptV: "demo",
  77. exptOk: true,
  78. },
  79. {
  80. key: "parent.Child",
  81. message: Message{
  82. "key1": "val1",
  83. "child": "child_val",
  84. "parent.child": "demo",
  85. },
  86. exptV: "demo",
  87. exptOk: true,
  88. },
  89. }
  90. fmt.Printf("The test bucket size is %d.\n\n", len(tests))
  91. for i, tt := range tests {
  92. //fmt.Printf("Parsing SQL %q.\n", tt.s)
  93. v, ok := tt.message.Value(tt.key)
  94. if tt.exptOk != ok {
  95. t.Errorf("%d. error mismatch:\n exp=%t\n got=%t\n\n", i, tt.exptOk, ok)
  96. } else if tt.exptOk && !reflect.DeepEqual(tt.exptV, v) {
  97. t.Errorf("%d. \n\nstmt mismatch:\n\nexp=%#v\n\ngot=%#v\n\n", i, tt.exptV, v)
  98. }
  99. }
  100. }