github.com/chrislusf/greenpack@v3.7.1-0.20170911073826-ad5bd10b7c47+incompatible/testdata/tupledefault_test.go (about) 1 package testdata 2 3 import ( 4 "bytes" 5 "testing" 6 7 cv "github.com/glycerine/goconvey/convey" 8 "github.com/glycerine/greenpack/msgp" 9 ) 10 11 func Test012AllTuple(t *testing.T) { 12 13 cv.Convey("greenpack -alltuple always writes tuples without fieldnames", t, func() { 14 15 v := TupleByDefaultTestStruct{ 16 S: "hello", 17 N: -19, 18 } 19 bts, err := v.MarshalMsg(nil) 20 if err != nil { 21 t.Fatal(err) 22 } 23 24 // verify Encode works the same as Marshal 25 var b4 bytes.Buffer 26 err = msgp.Encode(&b4, v) 27 if err != nil { 28 t.Fatal(err) 29 } 30 cv.So(string(b4.Bytes()), cv.ShouldResemble, string(bts)) 31 32 found0 := bytes.Contains(bts, []byte("S")) 33 found1 := bytes.Contains(bts, []byte("N")) 34 //fmt.Printf("\n bts = '%x'/'%s'\n", bts, string(bts)) 35 36 // tuples don't write field names. 37 cv.So(found0, cv.ShouldBeFalse) 38 cv.So(found1, cv.ShouldBeFalse) 39 40 // verify unmarshal works 41 var v2 TupleByDefaultTestStruct 42 _, err = v2.UnmarshalMsg(bts) 43 if err != nil { 44 t.Fatal(err) 45 } 46 cv.So(v2.N, cv.ShouldEqual, v.N) 47 cv.So(v2.S, cv.ShouldEqual, v.S) 48 49 // verify decode works 50 var v3 TupleByDefaultTestStruct 51 err = msgp.Decode(bytes.NewBuffer(bts), &v3) 52 if err != nil { 53 t.Fatal(err) 54 } 55 56 cv.So(v3.N, cv.ShouldEqual, v.N) 57 cv.So(v3.S, cv.ShouldEqual, v.S) 58 59 }) 60 }