package nns

import (
	"testing"

	"github.com/nspcc-dev/neo-go/pkg/vm/stackitem"
	"github.com/stretchr/testify/require"
)

func TestRecordStateFromStackItem(t *testing.T) {
	r := &RecordState{}
	require.Error(t, r.FromStackItem(stackitem.Make(42)))
	require.Error(t, r.FromStackItem(stackitem.Make([]stackitem.Item{})))
	require.Error(t, r.FromStackItem(stackitem.Make([]stackitem.Item{
		stackitem.Make([]stackitem.Item{}),
		stackitem.Make(16),
		stackitem.Make("cool"),
	})))
	require.Error(t, r.FromStackItem(stackitem.Make([]stackitem.Item{
		stackitem.Make("n3"),
		stackitem.Make([]stackitem.Item{}),
		stackitem.Make("cool"),
	})))
	require.Error(t, r.FromStackItem(stackitem.Make([]stackitem.Item{
		stackitem.Make("n3"),
		stackitem.Make(16),
		stackitem.Make([]stackitem.Item{}),
	})))
	require.Error(t, r.FromStackItem(stackitem.Make([]stackitem.Item{
		stackitem.Make("n3"),
		stackitem.Make(100500),
		stackitem.Make("cool"),
	})))
	require.NoError(t, r.FromStackItem(stackitem.Make([]stackitem.Item{
		stackitem.Make("n3"),
		stackitem.Make(16),
		stackitem.Make("cool"),
	})))
}