github.com/alexflint/go-memdump@v1.1.0/homogenous_test.go (about)

     1  package memdump
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestHomogenous_Struct(t *testing.T) {
    13  	type T struct {
    14  		X int
    15  		Y string
    16  	}
    17  	src := []T{{1, "s1"}, {2, "s2"}, {3, "s3"}}
    18  
    19  	var b bytes.Buffer
    20  
    21  	enc := NewEncoder(&b)
    22  	for i, x := range src {
    23  		t.Logf("encoding object %d", i)
    24  		err := enc.Encode(&x)
    25  		require.NoError(t, err)
    26  	}
    27  
    28  	dec := NewDecoder(&b)
    29  	var dest []T
    30  	for i := 0; ; i++ {
    31  		t.Logf("decoding object %d", i)
    32  		var x T
    33  		err := dec.Decode(&x)
    34  		if err == io.EOF {
    35  			break
    36  		}
    37  		assert.NoError(t, err)
    38  		dest = append(dest, x)
    39  	}
    40  
    41  	assert.EqualValues(t, src, dest)
    42  }