package neotest import ( "slices" "testing" "github.com/nspcc-dev/neo-go/pkg/crypto/keys" "github.com/nspcc-dev/neo-go/pkg/smartcontract" "github.com/nspcc-dev/neo-go/pkg/wallet" "github.com/stretchr/testify/require" ) func TestSingleSigner(t *testing.T) { a, err := wallet.NewAccount() require.NoError(t, err) s := NewSingleSigner(a) require.Equal(t, s.ScriptHash(), s.Account().Contract.ScriptHash()) } func TestMultiSigner(t *testing.T) { const size = 4 pubs := make(keys.PublicKeys, size) accs := make([]*wallet.Account, size) for i := range accs { a, err := wallet.NewAccount() require.NoError(t, err) accs[i] = a pubs[i] = a.PublicKey() } slices.SortFunc(pubs, (*keys.PublicKey).Cmp) m := smartcontract.GetDefaultHonestNodeCount(size) for i := range accs { require.NoError(t, accs[i].ConvertMultisig(m, pubs)) } s := NewMultiSigner(accs...) for i := range pubs { for j := range accs { if pub := accs[j].PublicKey(); pub.Equal(pubs[i]) { require.Equal(t, pub, s.Single(i).Account().PublicKey()) } } } }