2020-09-17 08:42:40 +00:00
|
|
|
package native
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2020-11-23 11:09:00 +00:00
|
|
|
"github.com/nspcc-dev/neo-go/internal/testserdes"
|
2020-09-17 08:42:40 +00:00
|
|
|
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
|
|
|
"github.com/nspcc-dev/neo-go/pkg/vm/stackitem"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
2023-04-03 10:34:24 +00:00
|
|
|
func getInvalidTestFunc(actual stackitem.Convertible, value any) func(t *testing.T) {
|
2020-09-17 08:42:40 +00:00
|
|
|
return func(t *testing.T) {
|
|
|
|
it := stackitem.Make(value)
|
2021-07-17 15:37:33 +00:00
|
|
|
require.Error(t, actual.FromStackItem(it))
|
2020-09-17 08:42:40 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-07-17 15:37:33 +00:00
|
|
|
func TestIDListToFromSI(t *testing.T) {
|
2020-09-17 08:42:40 +00:00
|
|
|
t.Run("Valid", func(t *testing.T) {
|
|
|
|
l := &IDList{1, 4, 5}
|
2021-07-17 15:37:33 +00:00
|
|
|
var l2 = new(IDList)
|
|
|
|
testserdes.ToFromStackItem(t, l, l2)
|
2020-09-17 08:42:40 +00:00
|
|
|
})
|
|
|
|
t.Run("Invalid", func(t *testing.T) {
|
|
|
|
t.Run("NotArray", getInvalidTestFunc(new(IDList), []byte{}))
|
|
|
|
t.Run("InvalidElement", getInvalidTestFunc(new(IDList), []stackitem.Item{stackitem.Null{}}))
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2020-09-18 13:26:36 +00:00
|
|
|
func TestIDList_Remove(t *testing.T) {
|
|
|
|
l := IDList{1, 4, 5}
|
|
|
|
|
|
|
|
// missing
|
|
|
|
require.False(t, l.Remove(2))
|
|
|
|
require.Equal(t, IDList{1, 4, 5}, l)
|
|
|
|
|
|
|
|
// middle
|
|
|
|
require.True(t, l.Remove(4))
|
|
|
|
require.Equal(t, IDList{1, 5}, l)
|
|
|
|
|
|
|
|
// last
|
|
|
|
require.True(t, l.Remove(5))
|
|
|
|
require.Equal(t, IDList{1}, l)
|
|
|
|
}
|
|
|
|
|
2021-07-17 15:37:33 +00:00
|
|
|
func TestNodeListToFromSI(t *testing.T) {
|
2020-09-17 08:42:40 +00:00
|
|
|
priv, err := keys.NewPrivateKey()
|
|
|
|
require.NoError(t, err)
|
|
|
|
pub := priv.PublicKey()
|
|
|
|
|
|
|
|
t.Run("Valid", func(t *testing.T) {
|
|
|
|
l := &NodeList{pub}
|
2021-07-17 15:37:33 +00:00
|
|
|
var l2 = new(NodeList)
|
|
|
|
testserdes.ToFromStackItem(t, l, l2)
|
2020-09-17 08:42:40 +00:00
|
|
|
})
|
|
|
|
t.Run("Invalid", func(t *testing.T) {
|
|
|
|
t.Run("NotArray", getInvalidTestFunc(new(NodeList), []byte{}))
|
|
|
|
t.Run("InvalidElement", getInvalidTestFunc(new(NodeList), []stackitem.Item{stackitem.Null{}}))
|
|
|
|
t.Run("InvalidKey", getInvalidTestFunc(new(NodeList),
|
|
|
|
[]stackitem.Item{stackitem.NewByteArray([]byte{0x9})}))
|
|
|
|
})
|
|
|
|
}
|