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  }