vm: add more serialization tests

This commit is contained in:
Evgenii Stratonikov 2019-11-05 17:04:14 +03:00
parent 59f9c2bddc
commit 412582dc78

View file

@ -300,6 +300,19 @@ func TestSerializeStruct(t *testing.T) {
require.Equal(t, item.value, vm.estack.Top().Array()) require.Equal(t, item.value, vm.estack.Top().Array())
} }
func TestDeserializeUnknown(t *testing.T) {
prog := append(getSyscallProg("Neo.Runtime.Deserialize"), byte(RET))
vm := load(prog)
data, err := serializeItem(NewBigIntegerItem(123))
require.NoError(t, err)
data[0] = 0xFF
vm.estack.PushVal(data)
checkVMFailed(t, vm)
}
func TestSerializeMap(t *testing.T) { func TestSerializeMap(t *testing.T) {
vm := load(getSerializeProg()) vm := load(getSerializeProg())
item := NewMapItem() item := NewMapItem()
@ -314,6 +327,17 @@ func TestSerializeMap(t *testing.T) {
require.Equal(t, item.value, vm.estack.Top().value.(*MapItem).value) require.Equal(t, item.value, vm.estack.Top().value.(*MapItem).value)
} }
func TestSerializeInterop(t *testing.T) {
vm := load(getSerializeProg())
item := NewInteropItem("kek")
vm.estack.Push(&Element{value: item})
err := vm.Step()
require.Error(t, err)
require.True(t, vm.HasFailed())
}
func callNTimes(n uint16) []byte { func callNTimes(n uint16) []byte {
return makeProgram( return makeProgram(
PUSHBYTES2, Instruction(n), Instruction(n>>8), // little-endian PUSHBYTES2, Instruction(n), Instruction(n>>8), // little-endian