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