You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.3 KiB
Go

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)
}