package transaction import ( "encoding/hex" "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" ) func TestInvocationZeroScript(t *testing.T) { // Zero-length script. in, err := hex.DecodeString("000000000000000000") require.NoError(t, err) inv := &InvocationTX{Version: 1} r := io.NewBinReaderFromBuf(in) inv.DecodeBinary(r) assert.Error(t, r.Err) // PUSH1 script. in, err = hex.DecodeString("01510000000000000000") require.NoError(t, err) r = io.NewBinReaderFromBuf(in) inv.DecodeBinary(r) assert.NoError(t, r.Err) } func TestInvocationNegativeGas(t *testing.T) { // Negative GAS in, err := hex.DecodeString("015100000000000000ff") require.NoError(t, err) inv := &InvocationTX{Version: 1} r := io.NewBinReaderFromBuf(in) inv.DecodeBinary(r) assert.Error(t, r.Err) // Positive GAS. in, err = hex.DecodeString("01510100000000000000") require.NoError(t, err) r = io.NewBinReaderFromBuf(in) inv.DecodeBinary(r) assert.NoError(t, r.Err) assert.Equal(t, util.Fixed8(1), inv.Gas) } func TestInvocationVersionZero(t *testing.T) { in, err := hex.DecodeString("0151") require.NoError(t, err) inv := &InvocationTX{Version: 1} r := io.NewBinReaderFromBuf(in) inv.DecodeBinary(r) assert.Error(t, r.Err) inv = &InvocationTX{Version: 0} r = io.NewBinReaderFromBuf(in) inv.DecodeBinary(r) assert.NoError(t, r.Err) assert.Equal(t, util.Fixed8(0), inv.Gas) }