package codec import ( "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) type stringerMock struct { value string } func (s stringerMock) String() string { return s.value } func TestPlainCodecEncode(t *testing.T) { c := NewPlainCodec() // []byte data, err := c.Encode([]byte("hello")) require.NoError(t, err) assert.Equal(t, []byte("hello"), data) // string data, err = c.Encode("world") require.NoError(t, err) assert.Equal(t, []byte("world"), data) // fmt.Stringer data, err = c.Encode(stringerMock{value: "stringer"}) require.NoError(t, err) assert.Equal(t, []byte("stringer"), data) // nil data, err = c.Encode(nil) require.NoError(t, err) assert.Nil(t, data) // unsupported _, err = c.Encode(123) assert.Error(t, err) } func TestPlainCodecDecode(t *testing.T) { c := NewPlainCodec() // *[]byte var bytesResult []byte err := c.Decode([]byte("data"), &bytesResult) require.NoError(t, err) assert.Equal(t, []byte("data"), bytesResult) // *string var stringResult string err = c.Decode([]byte("text"), &stringResult) require.NoError(t, err) assert.Equal(t, "text", stringResult) // nil target err = c.Decode([]byte("oops"), nil) assert.Error(t, err) // unsupported target var unsupported int err = c.Decode([]byte("data"), &unsupported) assert.Error(t, err) }