edgex_source_test.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package extensions
  2. import (
  3. "fmt"
  4. "github.com/edgexfoundry/go-mod-core-contracts/models"
  5. "github.com/emqx/kuiper/common"
  6. "testing"
  7. )
  8. var es = EdgexSource{valueDescs: map[string]string{
  9. "b1" : "bool",
  10. "i1" : "int8",
  11. "i2" : "INT16",
  12. "i3" : "INT32",
  13. "i4" : "INT64",
  14. "i5" : "UINT8",
  15. "i6" : "UINT16",
  16. "i7" : "UINT32",
  17. "i8" : "UINT64",
  18. "f1" : "FLOAT32",
  19. "f2" : "FLOAT64",
  20. "s1" : "String",
  21. },
  22. }
  23. func TestGetValue_Int(t *testing.T) {
  24. var testEvent = models.Event{Device: "test"}
  25. for i := 1; i < 9; i++{
  26. r1 := models.Reading{Name: fmt.Sprintf("i%d", i), Value: "1"}
  27. testEvent.Readings = append(testEvent.Readings, r1)
  28. }
  29. for _, r := range testEvent.Readings {
  30. if v, e := es.getValue(r, common.Log); e != nil {
  31. t.Errorf("%s", e)
  32. } else {
  33. expectOne(t, v)
  34. }
  35. }
  36. }
  37. func expectOne(t *testing.T, expected interface{}) {
  38. if v1, ok := expected.(int); ok {
  39. if v1 != 1 {
  40. t.Errorf("expected 1, but it's %d.", v1)
  41. }
  42. } else {
  43. t.Errorf("expected int type, but it's %t.", expected)
  44. }
  45. }
  46. func TestGetValue_Float(t *testing.T) {
  47. var testEvent = models.Event{Device: "test"}
  48. for i := 1; i < 3; i++{
  49. r1 := models.Reading{Name: fmt.Sprintf("f%d", i), Value: "3.14"}
  50. testEvent.Readings = append(testEvent.Readings, r1)
  51. }
  52. for _, r := range testEvent.Readings {
  53. if v, e := es.getValue(r, common.Log); e != nil {
  54. t.Errorf("%s", e)
  55. } else {
  56. expectPi(t, v)
  57. }
  58. }
  59. }
  60. func expectPi(t *testing.T, expected interface{}) {
  61. if v1, ok := expected.(float64); ok {
  62. if v1 != 3.14 {
  63. t.Errorf("expected 3.14, but it's %f.", v1)
  64. }
  65. } else {
  66. t.Errorf("expected float type, but it's %t.", expected)
  67. }
  68. }
  69. func TestGetValue_Bool(t *testing.T) {
  70. ///////////True
  71. trues := []string{"1", "t", "T", "true", "TRUE", "True"}
  72. for _, v := range trues {
  73. r1 := models.Reading{Name: "b1", Value: v}
  74. if v, e := es.getValue(r1, common.Log); e != nil {
  75. t.Errorf("%s", e)
  76. } else {
  77. expectTrue(t, v)
  78. }
  79. }
  80. r1 := models.Reading{Name: "b1", Value: "TRue"}
  81. if _, e := es.getValue(r1, common.Log); e == nil {
  82. t.Errorf("%s", e)
  83. }
  84. ///////////False
  85. falses := []string{"0", "f", "F", "false", "FALSE", "False"}
  86. for _, v := range falses {
  87. r1 := models.Reading{Name: "b1", Value: v}
  88. if v, e := es.getValue(r1, common.Log); e != nil {
  89. t.Errorf("%s", e)
  90. } else {
  91. expectFalse(t, v)
  92. }
  93. }
  94. r1 = models.Reading{Name: "b1", Value: "FAlse"}
  95. if _, e := es.getValue(r1, common.Log); e == nil {
  96. t.Errorf("%s", e)
  97. }
  98. }
  99. func expectTrue(t *testing.T, expected interface{}) {
  100. if v1, ok := expected.(bool); ok {
  101. if !v1 {
  102. t.Errorf("expected true, but it's false.")
  103. }
  104. } else {
  105. t.Errorf("expected boolean type, but it's %t.", expected)
  106. }
  107. }
  108. func expectFalse(t *testing.T, expected interface{}) {
  109. if v1, ok := expected.(bool); ok {
  110. if v1 {
  111. t.Errorf("expected false, but it's true.")
  112. }
  113. } else {
  114. t.Errorf("expected boolean type, but it's %t.", expected)
  115. }
  116. }
  117. func TestWrongType(t *testing.T) {
  118. es1 := EdgexSource{valueDescs: map[string]string{
  119. "f": "FLOAT", //A not exsited type
  120. },
  121. }
  122. r1 := models.Reading{Name: "f", Value: "100"}
  123. if v, _ := es1.getValue(r1, common.Log); v != "100" {
  124. t.Errorf("Expected 100, but it's %s!", v)
  125. }
  126. }
  127. func TestWrongValue(t *testing.T) {
  128. var testEvent = models.Event{Device: "test"}
  129. r1 := models.Reading{Name: "b1", Value: "100"} //100 cannot be converted to a boolean value
  130. r2 := models.Reading{Name: "i1", Value: "int"} //'int' string cannot be converted to int value
  131. r3 := models.Reading{Name: "f1", Value: "float"} //'float' string cannot be converted to int value
  132. testEvent.Readings = append(testEvent.Readings, r1, r2, r3)
  133. for _, v := range testEvent.Readings {
  134. if _, e := es.getValue(v, common.Log); e == nil {
  135. t.Errorf("Expected an error!")
  136. }
  137. }
  138. }