smartcontract: implement io.Serializable for Parameter

This commit is contained in:
Evgenii Stratonikov 2020-03-23 14:53:17 +03:00
parent 0f17b9be1d
commit 6ac69d075e
2 changed files with 111 additions and 0 deletions

View file

@ -6,8 +6,10 @@ import (
"reflect"
"testing"
"github.com/nspcc-dev/neo-go/pkg/io"
"github.com/nspcc-dev/neo-go/pkg/util"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
var marshalJSONTestCases = []struct {
@ -441,3 +443,28 @@ 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)
}
t.Run("unknown", func(t *testing.T) {
p := Parameter{Type: UnknownType}
w := io.NewBufBinWriter()
p.EncodeBinary(w.BinWriter)
require.Error(t, w.Err)
r := io.NewBinReaderFromBuf([]byte{0xAA})
p.DecodeBinary(r)
require.Error(t, r.Err)
})
}