package event import ( "math/big" "testing" "github.com/nspcc-dev/neo-go/pkg/core/state" "github.com/nspcc-dev/neo-go/pkg/util" "github.com/nspcc-dev/neo-go/pkg/vm/stackitem" "github.com/stretchr/testify/require" ) func TestParseStackArray(t *testing.T) { t.Run("success", func(t *testing.T) { arr := &stackitem.Array{} arr.Append(stackitem.NewBigInteger(big.NewInt(1))) arr.Append(stackitem.NewBigInteger(big.NewInt(2))) ev := &state.ContainedNotificationEvent{ Container: util.Uint256{67}, NotificationEvent: state.NotificationEvent{ ScriptHash: util.Uint160{69}, Name: "name", Item: arr, }, } items, err := ParseStackArray(ev) require.NoError(t, err, "failed to parse event items") require.Equal(t, 2, len(items), "invalid length") require.Equal(t, stackitem.NewBigInteger(big.NewInt(1)), items[0], "invalid item 0") require.Equal(t, stackitem.NewBigInteger(big.NewInt(2)), items[1], "invalid item 0") }) t.Run("empty stack error", func(t *testing.T) { arr := &stackitem.Array{} ev := &state.ContainedNotificationEvent{ Container: util.Uint256{67}, NotificationEvent: state.NotificationEvent{ ScriptHash: util.Uint160{69}, Name: "name", Item: arr, }, } items, err := ParseStackArray(ev) require.ErrorIs(t, err, errEmptyStackArray, "invalid empty array error") require.Equal(t, 0, len(items), "items was returned") }) }