github.com/simpleiot/simpleiot@v0.18.3/client/serial-wrapper_test.go (about) 1 package client 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/simpleiot/simpleiot/data" 8 ) 9 10 func TestSerialEncodeDecode(t *testing.T) { 11 seq := byte(123) 12 subject := "test/subject/23" 13 points := data.Points{ 14 {Type: data.PointTypeDescription, Text: "node description"}, 15 {Type: data.PointTypeValue, Value: 23.53}, 16 } 17 18 d, err := SerialEncode(seq, subject, points) 19 if err != nil { 20 t.Fatal("Error encoding data: ", err) 21 } 22 23 seqD, subjectD, payload, err := SerialDecode(d) 24 25 if err != nil { 26 t.Error("Decode error: ", err) 27 } 28 29 if seq != seqD { 30 t.Error("sequence mismatch") 31 } 32 33 if subject != subjectD { 34 fmt.Printf("exp: %v, got: %v\n", subject, subjectD) 35 fmt.Println("len exp: ", len(subject)) 36 fmt.Println("len got: ", len(subjectD)) 37 t.Error("subject mismatch") 38 } 39 40 pointsD, err := data.PbDecodeSerialPoints(payload) 41 if err != nil { 42 t.Fatalf("Error decoding payload: %v", err) 43 } 44 45 if len(pointsD) <= 0 { 46 t.Fatal("did not get any points") 47 } 48 49 if len(points) != len(pointsD) { 50 t.Error("points len mismatch") 51 fmt.Printf("points: %+v\n", points) 52 fmt.Printf("pointsD: %+v\n", pointsD) 53 } 54 55 if points[0].Type != pointsD[0].Type { 56 t.Error("points[0] description mismatch") 57 fmt.Printf("points: %+v\n", points[0]) 58 fmt.Printf("pointsD: %+v\n", pointsD[0]) 59 } 60 } 61 62 func TestSerialEncodeDecodeNoContent(t *testing.T) { 63 seq := byte(68) 64 65 d, err := SerialEncode(seq, "", nil) 66 if err != nil { 67 t.Fatal("Error encoding: ", err) 68 } 69 70 seqD, _, _, err := SerialDecode(d) 71 72 if err != nil { 73 t.Error("Decode error: ", err) 74 } 75 76 if seq != seqD { 77 t.Error("sequence mismatch") 78 } 79 }