stackitem: introduce Convertible interface

We have a lot of native contract types that are converted to stack items
before serialization, then deserialized as stack items and converted back to
regular structures. stackitem.Convertible allows to remove a lot of repetitive
io.Serializable code.

This also introduces to/from converter in testserdes which unfortunately
required to change util tests to avoid circular references.
This commit is contained in:
Roman Khimov 2021-07-17 18:37:33 +03:00
parent 2d993d0da5
commit aab18c3083
23 changed files with 223 additions and 339 deletions

View file

@ -4,7 +4,7 @@ import (
"math/big"
"testing"
"github.com/stretchr/testify/require"
"github.com/nspcc-dev/neo-go/internal/testserdes"
)
func TestCandidate_Bytes(t *testing.T) {
@ -12,7 +12,6 @@ func TestCandidate_Bytes(t *testing.T) {
Registered: true,
Votes: *big.NewInt(0x0F),
}
data := expected.Bytes()
actual := new(candidate).FromBytes(data)
require.Equal(t, expected, actual)
actual := new(candidate)
testserdes.ToFromStackItem(t, expected, actual)
}