| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package main
- import (
- json2 "encoding/json"
- "fmt"
- "lc/common/protocol"
- "testing"
- )
- func TestQueryDeviceState(t *testing.T) {
- var ret1 protocol.Pack_CHZB_UploadData
- mapData := make(map[string]*protocol.CHZB_LampData)
- var data protocol.CHZB_LampData
- data.Data = make(map[uint16]float64)
- data.SetStateErrorData(nil)
- //data.Data[0] = float64(0)
- data.Data[1] = float64(1)
- data.Data[2] = float64(0)
- data.Data[3] = 3
- data.Data[4] = 0.0
- data.Data[5] = 0.0
- data.Data[6] = 6
- data.Data[7] = 0.0
- data.Data[8] = 8 //by hxz 1,2,3,6,8为有效
- data.Data[9] = 0.0
- mapData["160000003194"] = &data
- fmt.Printf("mapData:\n%+v\n", mapData)
- fmt.Printf("data.Data:\n%+v\n", data.Data)
- if str, err := ret1.EnCode("160000003194", appConfig.GID, 1, 2, mapData); err != nil {
- //GetMQTTMgr().Publish(GetTopic(protocol.DT_LAMPCONTROLLER, o.devinfo.DevCode, protocol.TP_YM_DATA), str, mqtt.AtMostOnce, ToCloud)
- fmt.Printf("error :%s\n", err)
- fmt.Printf("encode result:%s\n", str)
- } else {
- fmt.Printf("error :%s\n", err)
- fmt.Printf("encode result:%s\n", str)
- }
- }
- type test struct {
- i int
- m map[int]float64
- }
- // 测试jsoniter "github.com/json-iterator/go" 的MarshalToString方法会panic;encoding/json 的marshal方法正常。
- func TestJsonMarshal(t *testing.T) {
- var map1 = make(map[string]*test)
- var map2 = make(map[int]float64)
- map2[1] = 1
- map2[2] = 2
- map2[3] = 3
- var tt test
- tt.i = 0
- tt.m = map2
- map1["18"] = &tt
- marshal, err := json2.Marshal(map2)
- if err != nil {
- fmt.Printf("encoding/json err:%v\n", err)
- }
- fmt.Printf("encoding/json tostring:%s ok!\n", string(marshal))
- fmt.Printf("###################################################\n")
- defer func() {
- if e := recover(); e != nil {
- //panic("jsoniter panic!\n")
- fmt.Printf("jsoniter panic:%v nonononono!\n", e)
- }
- }()
- toString, err2 := json.MarshalToString(map2)
- if err2 != nil {
- fmt.Printf("jsoniter err:%v\n", err2)
- return
- }
- fmt.Printf("jsoniter tostring:%s\n", toString)
- }
|