github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/smartcontract/manifest/abi_test.go (about)

     1  package manifest
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/nspcc-dev/neo-go/pkg/smartcontract"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestABIIsValid(t *testing.T) {
    11  	a := &ABI{}
    12  	require.Error(t, a.IsValid()) // No methods.
    13  
    14  	a.Methods = append(a.Methods, Method{Name: "qwe"})
    15  	require.NoError(t, a.IsValid())
    16  
    17  	a.Methods = append(a.Methods, Method{Name: "qaz"})
    18  	require.NoError(t, a.IsValid())
    19  
    20  	a.Methods = append(a.Methods, Method{Name: "qaz", Offset: -42})
    21  	require.Error(t, a.IsValid())
    22  
    23  	a.Methods = append(a.Methods[:len(a.Methods)-1], Method{Name: "qwe", Parameters: []Parameter{NewParameter("param", smartcontract.BoolType)}})
    24  	require.NoError(t, a.IsValid())
    25  
    26  	a.Methods = append(a.Methods, Method{Name: "qwe"})
    27  	require.Error(t, a.IsValid())
    28  	a.Methods = a.Methods[:len(a.Methods)-1]
    29  
    30  	a.Events = append(a.Events, Event{Name: "wsx"})
    31  	require.NoError(t, a.IsValid())
    32  
    33  	a.Events = append(a.Events, Event{})
    34  	require.Error(t, a.IsValid())
    35  
    36  	a.Events = append(a.Events[:len(a.Events)-1], Event{Name: "edc"})
    37  	require.NoError(t, a.IsValid())
    38  
    39  	a.Events = append(a.Events, Event{Name: "wsx"})
    40  	require.Error(t, a.IsValid())
    41  }