github.com/chrislusf/greenpack@v3.7.1-0.20170911073826-ad5bd10b7c47+incompatible/testdata/omitclue_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 Test011OmitClueWorks(t *testing.T) {
    12  
    13  	cv.Convey("greenpack -omit-clue leaves off the trailing type and version information from the fieldnames", t, func() {
    14  
    15  		v := OmitClueTestStruct{
    16  			S: "hello",
    17  			N: -19,
    18  		}
    19  		bts, err := v.MarshalMsg(nil)
    20  		if err != nil {
    21  			t.Fatal(err)
    22  		}
    23  
    24  		found0 := bytes.Contains(bts, []byte("S_zid00_str"))
    25  		found1 := bytes.Contains(bts, []byte("N_zid01_i64"))
    26  		//fmt.Printf("\n bts = '%x'/'%s'\n", bts, string(bts))
    27  
    28  		cv.So(found0, cv.ShouldBeFalse)
    29  		cv.So(found1, cv.ShouldBeFalse)
    30  
    31  		// verify unmarshal works
    32  		var v2 OmitClueTestStruct
    33  		_, err = v2.UnmarshalMsg(bts)
    34  		if err != nil {
    35  			t.Fatal(err)
    36  		}
    37  		cv.So(v2.N, cv.ShouldEqual, v.N)
    38  		cv.So(v2.S, cv.ShouldEqual, v.S)
    39  
    40  		// verify decode works
    41  		var v3 OmitClueTestStruct
    42  		err = msgp.Decode(bytes.NewBuffer(bts), &v3)
    43  		if err != nil {
    44  			t.Fatal(err)
    45  		}
    46  
    47  		cv.So(v3.N, cv.ShouldEqual, v.N)
    48  		cv.So(v3.S, cv.ShouldEqual, v.S)
    49  
    50  		// verify encode works the same as Marshal
    51  		var b4 bytes.Buffer
    52  		err = msgp.Encode(&b4, v)
    53  		if err != nil {
    54  			t.Fatal(err)
    55  		}
    56  		cv.So(string(b4.Bytes()), cv.ShouldResemble, string(bts))
    57  	})
    58  }