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