mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-08 05:57:03 +09:00
45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
package streampool
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/anyproto/any-sync/net/streampool/testservice"
|
|
)
|
|
|
|
func TestProtoEncoding(t *testing.T) {
|
|
t.Run("not a proto err", func(t *testing.T) {
|
|
_, err := EncodingProto.Marshal("string")
|
|
assert.Error(t, err)
|
|
err = EncodingProto.Unmarshal(nil, "sss")
|
|
assert.Error(t, err)
|
|
})
|
|
t.Run("encode marshal", func(t *testing.T) {
|
|
data, err := EncodingProto.Marshal(&testservice.StreamMessage{ReqData: "1"})
|
|
require.NoError(t, err)
|
|
msg := &testservice.StreamMessage{}
|
|
require.NoError(t, EncodingProto.Unmarshal(data, msg))
|
|
assert.Equal(t, "1", msg.ReqData)
|
|
})
|
|
t.Run("encode marshal append empty buf", func(t *testing.T) {
|
|
data, err := EncodingProto.(protoEncoding).MarshalAppend(nil, &testservice.StreamMessage{ReqData: "1"})
|
|
require.NoError(t, err)
|
|
msg := &testservice.StreamMessage{}
|
|
require.NoError(t, EncodingProto.Unmarshal(data, msg))
|
|
assert.Equal(t, "1", msg.ReqData)
|
|
})
|
|
t.Run("encode marshal append non-empty buf", func(t *testing.T) {
|
|
buf := make([]byte, 150)
|
|
_, err := rand.Read(buf)
|
|
require.NoError(t, err)
|
|
data, err := EncodingProto.(protoEncoding).MarshalAppend(buf, &testservice.StreamMessage{ReqData: "1"})
|
|
require.NoError(t, err)
|
|
msg := &testservice.StreamMessage{}
|
|
require.NoError(t, EncodingProto.Unmarshal(data[150:], msg))
|
|
require.Equal(t, buf, data[:150])
|
|
assert.Equal(t, "1", msg.ReqData)
|
|
})
|
|
}
|