testserdes: implement helpers for encode/decode routines

Frequently one needs to check if struct serializes/deserializes
properly. This commit implements helpers for such cases including:
1. JSON
2. io.Serializable interface
This commit is contained in:
Evgenii Stratonikov 2020-03-26 17:43:24 +03:00
parent d4622768d1
commit 9abda40171
36 changed files with 201 additions and 476 deletions

View file

@ -6,7 +6,7 @@ import (
"reflect"
"testing"
"github.com/nspcc-dev/neo-go/pkg/io"
"github.com/nspcc-dev/neo-go/pkg/internal/testserdes"
"github.com/nspcc-dev/neo-go/pkg/util"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@ -446,25 +446,14 @@ func TestNewParameterFromString(t *testing.T) {
func TestEncodeDecodeBinary(t *testing.T) {
for _, tc := range marshalJSONTestCases {
w := io.NewBufBinWriter()
tc.input.EncodeBinary(w.BinWriter)
require.NoError(t, w.Err)
r := io.NewBinReaderFromBuf(w.Bytes())
var p Parameter
p.DecodeBinary(r)
require.NoError(t, r.Err)
require.Equal(t, tc.input, p)
testserdes.EncodeDecodeBinary(t, &tc.input, new(Parameter))
}
t.Run("unknown", func(t *testing.T) {
p := Parameter{Type: UnknownType}
w := io.NewBufBinWriter()
p.EncodeBinary(w.BinWriter)
require.Error(t, w.Err)
_, err := testserdes.EncodeBinary(&p)
require.Error(t, err)
r := io.NewBinReaderFromBuf([]byte{0xAA})
p.DecodeBinary(r)
require.Error(t, r.Err)
require.Error(t, testserdes.DecodeBinary([]byte{0xAA}, &p))
})
}