|
|
package codec
|
|
|
|
|
|
import (
|
|
|
"testing"
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
"github.com/stretchr/testify/require"
|
|
|
)
|
|
|
|
|
|
func TestBinaryCodec(t *testing.T) {
|
|
|
codec := NewBinaryCodec()
|
|
|
|
|
|
// 测试名称
|
|
|
assert.Equal(t, "binary", codec.Name(), "Expected name to be 'binary'")
|
|
|
|
|
|
// 测试编码字节切片
|
|
|
data := []byte("hello world")
|
|
|
encoded, err := codec.Encode(data)
|
|
|
require.NoError(t, err, "Expected no error when encoding")
|
|
|
assert.Equal(t, data, encoded, "Expected encoded data to match original")
|
|
|
|
|
|
// 测试解码
|
|
|
var decoded []byte
|
|
|
err = codec.Decode(encoded, &decoded)
|
|
|
require.NoError(t, err, "Expected no error when decoding")
|
|
|
assert.Equal(t, data, decoded, "Expected decoded data to match original")
|
|
|
}
|
|
|
|
|
|
func TestBinaryCodecEncodeString(t *testing.T) {
|
|
|
codec := NewBinaryCodec()
|
|
|
|
|
|
// 测试编码字符串 - BinaryCodec不支持字符串,应该返回错误
|
|
|
_, err := codec.Encode("hello world")
|
|
|
assert.Error(t, err, "Expected error for unsupported type")
|
|
|
}
|
|
|
|
|
|
func TestBinaryCodecEmptyData(t *testing.T) {
|
|
|
codec := NewBinaryCodec()
|
|
|
|
|
|
// 测试空数据
|
|
|
data := []byte{}
|
|
|
encoded, err := codec.Encode(data)
|
|
|
require.NoError(t, err)
|
|
|
assert.Equal(t, []byte{}, encoded)
|
|
|
|
|
|
var decoded []byte
|
|
|
err = codec.Decode(encoded, &decoded)
|
|
|
require.NoError(t, err)
|
|
|
assert.Equal(t, []byte{}, decoded)
|
|
|
}
|
|
|
|
|
|
func TestBinaryCodecLargeData(t *testing.T) {
|
|
|
codec := NewBinaryCodec()
|
|
|
|
|
|
// 测试大数据
|
|
|
data := make([]byte, 10000)
|
|
|
for i := range data {
|
|
|
data[i] = byte(i % 256)
|
|
|
}
|
|
|
|
|
|
encoded, err := codec.Encode(data)
|
|
|
require.NoError(t, err)
|
|
|
assert.Equal(t, data, encoded)
|
|
|
|
|
|
var decoded []byte
|
|
|
err = codec.Decode(encoded, &decoded)
|
|
|
require.NoError(t, err)
|
|
|
assert.Equal(t, data, decoded)
|
|
|
}
|
|
|
|
|
|
func TestBinaryCodecEncodeInt(t *testing.T) {
|
|
|
codec := NewBinaryCodec()
|
|
|
|
|
|
// 测试编码整数
|
|
|
data := int32(42)
|
|
|
encoded, err := codec.Encode(data)
|
|
|
require.NoError(t, err)
|
|
|
assert.NotEmpty(t, encoded)
|
|
|
|
|
|
// 测试解码整数
|
|
|
var decoded int32
|
|
|
err = codec.Decode(encoded, &decoded)
|
|
|
require.NoError(t, err)
|
|
|
assert.Equal(t, data, decoded)
|
|
|
}
|
|
|
|
|
|
func TestBinaryCodecInvalidType(t *testing.T) {
|
|
|
codec := NewBinaryCodec()
|
|
|
|
|
|
// 测试无效类型(字符串)
|
|
|
_, err := codec.Encode("invalid")
|
|
|
assert.Error(t, err, "Expected error for invalid type")
|
|
|
}
|
|
|
|