funcs_test.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package templates
  2. import (
  3. "encoding/base64"
  4. "fmt"
  5. "github.com/emqx/kuiper/common"
  6. "reflect"
  7. "testing"
  8. )
  9. func TestBase64Encode(t *testing.T) {
  10. var tests = []struct {
  11. para interface{}
  12. expect string
  13. err string
  14. }{
  15. {
  16. para: 1,
  17. expect: "1",
  18. },
  19. {
  20. para: float32(3.14),
  21. expect: "3.14",
  22. },
  23. {
  24. para: float64(3.1415),
  25. expect: "3.1415",
  26. },
  27. {
  28. para: "hello",
  29. expect: "hello",
  30. },
  31. {
  32. para: "{\"hello\" : 3}",
  33. expect: "{\"hello\" : 3}",
  34. },
  35. {
  36. para: map[string]interface{}{
  37. "temperature": 30,
  38. "humidity": 20,
  39. },
  40. expect: `{"humidity":20,"temperature":30}`,
  41. },
  42. }
  43. fmt.Printf("The test bucket size is %d.\n\n", len(tests))
  44. for i, tt := range tests {
  45. result, err := Base64Encode(tt.para)
  46. r, _ := base64.StdEncoding.DecodeString(result)
  47. if !reflect.DeepEqual(tt.err, common.Errstring(err)) {
  48. t.Errorf("%d. %q: error mismatch:\n exp=%s\n got=%s\n\n", i, tt.para, tt.err, err)
  49. } else if tt.err == "" && !reflect.DeepEqual(tt.expect, string(r)) {
  50. t.Errorf("%d. %q\n\n mismatch:\n\nexp=%#v\n\ngot=%#v\n\n", i, tt.para, tt.expect, string(r))
  51. }
  52. }
  53. }
  54. func TestAdd(t *testing.T) {
  55. var tests = []struct {
  56. para1 interface{}
  57. para2 interface{}
  58. expect interface{}
  59. err string
  60. }{
  61. {
  62. para1: int(3),
  63. para2: int(3),
  64. expect: int64(6),
  65. },
  66. {
  67. para1: int64(3),
  68. para2: int64(3),
  69. expect: int64(6),
  70. },
  71. {
  72. para1: int64(3),
  73. para2: int64(-3),
  74. expect: int64(0),
  75. },
  76. {
  77. para1: int(3),
  78. para2: float32(3),
  79. expect: int64(6),
  80. },
  81. {
  82. para1: int(3),
  83. para2: float32(3.14),
  84. expect: int64(6),
  85. },
  86. {
  87. para1: int64(3),
  88. para2: float64(3.14),
  89. expect: int64(6),
  90. },
  91. {
  92. para1: int64(3),
  93. para2: uint(1),
  94. expect: nil,
  95. err: "Unsupported data type uint of para2 for Add function when para1 type is int64.",
  96. },
  97. {
  98. para1: uint64(3),
  99. para2: uint64(1),
  100. expect: uint64(4),
  101. err: "",
  102. },
  103. {
  104. para1: uint64(3),
  105. para2: int64(1),
  106. expect: nil,
  107. err: "Unsupported data type int64 of para2 for Add function when para1 type is uint64.",
  108. },
  109. {
  110. para1: float32(3.1),
  111. para2: float32(1.1),
  112. expect: float64(4.199999928474426),
  113. err: "",
  114. },
  115. {
  116. para1: float64(3.1),
  117. para2: float64(1.1),
  118. expect: float64(4.2),
  119. err: "",
  120. },
  121. }
  122. fmt.Printf("The test bucket size is %d.\n\n", len(tests))
  123. for i, tt := range tests {
  124. result, err := Add(tt.para1, tt.para2)
  125. if !reflect.DeepEqual(tt.err, common.Errstring(err)) {
  126. t.Errorf("%d. %q %q: error mismatch:\n exp=%s\n got=%s\n\n", i, tt.para1, tt.para2, tt.err, err)
  127. } else if tt.err == "" && !reflect.DeepEqual(tt.expect, result) {
  128. t.Errorf("%d. %q %q \n\n mismatch:\n\nexp=%#v\n\ngot=%#v\n\n", i, tt.para1, tt.para2, tt.expect, result)
  129. }
  130. }
  131. }