neo-go/pkg/vm/ref_counter_test.go

34 lines
677 B
Go
Raw Normal View History

package vm
import (
"testing"
"github.com/nspcc-dev/neo-go/pkg/vm/stackitem"
"github.com/stretchr/testify/require"
)
func TestRefCounter_Add(t *testing.T) {
r := newRefCounter()
require.Equal(t, 0, r.size)
r.Add(stackitem.Null{})
require.Equal(t, 1, r.size)
r.Add(stackitem.Null{})
require.Equal(t, 2, r.size) // count scalar items twice
arr := stackitem.NewArray([]stackitem.Item{stackitem.NewByteArray([]byte{1}), stackitem.NewBool(false)})
r.Add(arr)
require.Equal(t, 5, r.size) // array + 2 elements
r.Add(arr)
require.Equal(t, 6, r.size) // count only array
r.Remove(arr)
require.Equal(t, 5, r.size)
r.Remove(arr)
require.Equal(t, 2, r.size)
}