github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/core/transaction/witness_test.go (about)

     1  package transaction
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/nspcc-dev/neo-go/internal/testserdes"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestWitnessSerDes(t *testing.T) {
    11  	var good1 = &Witness{
    12  		InvocationScript:   make([]byte, 64),
    13  		VerificationScript: make([]byte, 32),
    14  	}
    15  	var good2 = &Witness{
    16  		InvocationScript:   make([]byte, MaxInvocationScript),
    17  		VerificationScript: make([]byte, MaxVerificationScript),
    18  	}
    19  	var bad1 = &Witness{
    20  		InvocationScript:   make([]byte, MaxInvocationScript+1),
    21  		VerificationScript: make([]byte, 32),
    22  	}
    23  	var bad2 = &Witness{
    24  		InvocationScript:   make([]byte, 128),
    25  		VerificationScript: make([]byte, MaxVerificationScript+1),
    26  	}
    27  	var exp = new(Witness)
    28  	testserdes.MarshalUnmarshalJSON(t, good1, exp)
    29  	testserdes.MarshalUnmarshalJSON(t, good2, exp)
    30  	testserdes.EncodeDecodeBinary(t, good1, exp)
    31  	testserdes.EncodeDecodeBinary(t, good2, exp)
    32  	bin1, err := testserdes.EncodeBinary(bad1)
    33  	require.NoError(t, err)
    34  	bin2, err := testserdes.EncodeBinary(bad2)
    35  	require.NoError(t, err)
    36  	require.Error(t, testserdes.DecodeBinary(bin1, exp))
    37  	require.Error(t, testserdes.DecodeBinary(bin2, exp))
    38  }
    39  
    40  func TestWitnessCopy(t *testing.T) {
    41  	original := &Witness{
    42  		InvocationScript:   []byte{1, 2, 3},
    43  		VerificationScript: []byte{3, 2, 1},
    44  	}
    45  
    46  	cp := original.Copy()
    47  	require.Equal(t, *original, cp)
    48  
    49  	original.InvocationScript[0] = 0x05
    50  	require.NotEqual(t, *original, cp)
    51  }