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  }