protocol_test.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package protocol
  2. import (
  3. "sparrow/pkg/tlv"
  4. "reflect"
  5. "testing"
  6. "time"
  7. )
  8. func TestCommand(t *testing.T) {
  9. param := []interface{}{uint32(1), float32(3.2), []byte{'1', '2'}}
  10. params, err := tlv.MakeTLVs(param)
  11. if err != nil {
  12. t.Fatal(err)
  13. }
  14. payloadHead := CommandEventHead{
  15. Flag: 0,
  16. Timestamp: uint64(time.Now().Unix()) * 1000,
  17. SubDeviceid: uint16(2),
  18. No: uint16(12),
  19. Priority: uint16(1),
  20. ParamsCount: uint16(len(param)),
  21. }
  22. payload := &Command{
  23. Head: payloadHead,
  24. Params: params,
  25. }
  26. buf, err := payload.Marshal()
  27. if err != nil {
  28. if err != nil {
  29. t.Error(err)
  30. }
  31. }
  32. payload2 := &Command{}
  33. err = payload2.UnMarshal(buf)
  34. if err != nil {
  35. if err != nil {
  36. t.Error(err)
  37. }
  38. }
  39. if !reflect.DeepEqual(payload, payload2) {
  40. t.Errorf("test command payload failed, want %v, got %v", payload, payload2)
  41. }
  42. }
  43. func TestEvent(t *testing.T) {
  44. param := []interface{}{uint32(1), float32(3.2), []byte{'1', '2'}}
  45. params, err := tlv.MakeTLVs(param)
  46. if err != nil {
  47. t.Fatal(err)
  48. }
  49. payloadHead := CommandEventHead{
  50. Flag: 0,
  51. Timestamp: uint64(time.Now().Unix()) * 1000,
  52. SubDeviceid: uint16(2),
  53. No: uint16(12),
  54. Priority: uint16(1),
  55. ParamsCount: uint16(len(param)),
  56. }
  57. payload := &Event{
  58. Head: payloadHead,
  59. Params: params,
  60. }
  61. buf, err := payload.Marshal()
  62. if err != nil {
  63. if err != nil {
  64. t.Error(err)
  65. }
  66. }
  67. payload2 := &Event{}
  68. err = payload2.UnMarshal(buf)
  69. if err != nil {
  70. if err != nil {
  71. t.Error(err)
  72. }
  73. }
  74. if !reflect.DeepEqual(payload, payload2) {
  75. t.Errorf("test event payload failed, want %v, got %v", payload, payload2)
  76. }
  77. }
  78. func TestData(t *testing.T) {
  79. payloadHead := DataHead{
  80. Flag: 0,
  81. Timestamp: uint64(time.Now().Unix() * 1000),
  82. }
  83. param1 := []interface{}{uint32(3), float32(1.2), int64(10)}
  84. params1, err := tlv.MakeTLVs(param1)
  85. if err != nil {
  86. t.Fatal(err)
  87. }
  88. sub1 := SubData{
  89. Head: SubDataHead{
  90. SubDeviceid: uint16(1),
  91. PropertyNum: uint16(1),
  92. ParamsCount: uint16(len(params1)),
  93. },
  94. Params: params1,
  95. }
  96. param2 := []interface{}{uint32(4), int64(11)}
  97. params2, err := tlv.MakeTLVs(param2)
  98. if err != nil {
  99. t.Fatal(err)
  100. }
  101. sub2 := SubData{
  102. Head: SubDataHead{
  103. SubDeviceid: uint16(1),
  104. PropertyNum: uint16(2),
  105. ParamsCount: uint16(len(params2)),
  106. },
  107. Params: params2,
  108. }
  109. payload := &Data{
  110. Head: payloadHead,
  111. SubData: []SubData{},
  112. }
  113. payload.SubData = append(payload.SubData, sub1)
  114. payload.SubData = append(payload.SubData, sub2)
  115. buf, err := payload.Marshal()
  116. if err != nil {
  117. if err != nil {
  118. t.Error(err)
  119. }
  120. }
  121. payload2 := &Data{}
  122. err = payload2.UnMarshal(buf)
  123. if err != nil {
  124. if err != nil {
  125. t.Error(err)
  126. }
  127. }
  128. if !reflect.DeepEqual(payload, payload2) {
  129. t.Errorf("test data payload failed, want %v, got %v", payload, payload2)
  130. }
  131. }