github.com/alexflint/go-memdump@v1.1.0/single_test.go (about) 1 package memdump 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestSingle(t *testing.T) { 12 type T struct { 13 X int 14 Y string 15 Ts []*T 16 } 17 src := T{ 18 X: 123, 19 Y: "abc", 20 Ts: []*T{ 21 {4, "x", nil}, 22 {5, "y", nil}, 23 }, 24 } 25 26 var b bytes.Buffer 27 28 err := Encode(&b, &src) 29 require.NoError(t, err) 30 31 var dest *T 32 err = Decode(&b, &dest) 33 require.NoError(t, err) 34 35 assert.EqualValues(t, src, *dest) 36 } 37 38 func TestEncode_PanicsForNonPointer(t *testing.T) { 39 var x struct{} 40 var b bytes.Buffer 41 assert.Panics(t, func() { Encode(&b, x) }) 42 } 43 44 func TestDecode_PanicsForNonPointerToPointer(t *testing.T) { 45 var x struct{} 46 var b bytes.Buffer 47 assert.Panics(t, func() { Decode(&b, x) }) 48 assert.Panics(t, func() { Decode(&b, &x) }) 49 }