ym485_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package main
  2. import (
  3. json2 "encoding/json"
  4. "fmt"
  5. "lc/common/protocol"
  6. "testing"
  7. )
  8. func TestQueryDeviceState(t *testing.T) {
  9. var ret1 protocol.Pack_CHZB_UploadData
  10. mapData := make(map[string]*protocol.CHZB_LampData)
  11. var data protocol.CHZB_LampData
  12. data.Data = make(map[uint16]float64)
  13. data.SetStateErrorData(nil)
  14. //data.Data[0] = float64(0)
  15. data.Data[1] = float64(1)
  16. data.Data[2] = float64(0)
  17. data.Data[3] = 3
  18. data.Data[4] = 0.0
  19. data.Data[5] = 0.0
  20. data.Data[6] = 6
  21. data.Data[7] = 0.0
  22. data.Data[8] = 8 //by hxz 1,2,3,6,8为有效
  23. data.Data[9] = 0.0
  24. mapData["160000003194"] = &data
  25. fmt.Printf("mapData:\n%+v\n", mapData)
  26. fmt.Printf("data.Data:\n%+v\n", data.Data)
  27. if str, err := ret1.EnCode("160000003194", appConfig.GID, 1, 2, mapData); err != nil {
  28. //GetMQTTMgr().Publish(GetTopic(protocol.DT_LAMPCONTROLLER, o.devinfo.DevCode, protocol.TP_YM_DATA), str, mqtt.AtMostOnce, ToCloud)
  29. fmt.Printf("error :%s\n", err)
  30. fmt.Printf("encode result:%s\n", str)
  31. } else {
  32. fmt.Printf("error :%s\n", err)
  33. fmt.Printf("encode result:%s\n", str)
  34. }
  35. }
  36. type test struct {
  37. i int
  38. m map[int]float64
  39. }
  40. // 测试jsoniter "github.com/json-iterator/go" 的MarshalToString方法会panic;encoding/json 的marshal方法正常。
  41. func TestJsonMarshal(t *testing.T) {
  42. var map1 = make(map[string]*test)
  43. var map2 = make(map[int]float64)
  44. map2[1] = 1
  45. map2[2] = 2
  46. map2[3] = 3
  47. var tt test
  48. tt.i = 0
  49. tt.m = map2
  50. map1["18"] = &tt
  51. marshal, err := json2.Marshal(map2)
  52. if err != nil {
  53. fmt.Printf("encoding/json err:%v\n", err)
  54. }
  55. fmt.Printf("encoding/json tostring:%s ok!\n", string(marshal))
  56. fmt.Printf("###################################################\n")
  57. defer func() {
  58. if e := recover(); e != nil {
  59. //panic("jsoniter panic!\n")
  60. fmt.Printf("jsoniter panic:%v nonononono!\n", e)
  61. }
  62. }()
  63. toString, err2 := json.MarshalToString(map2)
  64. if err2 != nil {
  65. fmt.Printf("jsoniter err:%v\n", err2)
  66. return
  67. }
  68. fmt.Printf("jsoniter tostring:%s\n", toString)
  69. }