github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/util/slice/array_test.go (about)

     1  package slice
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  var testCases = []struct {
    11  	arr []byte
    12  	rev []byte
    13  }{
    14  	{
    15  		arr: []byte{},
    16  		rev: []byte{},
    17  	},
    18  	{
    19  		arr: []byte{0x01},
    20  		rev: []byte{0x01},
    21  	},
    22  	{
    23  		arr: []byte{0x01, 0x02, 0x03, 0x04},
    24  		rev: []byte{0x04, 0x03, 0x02, 0x01},
    25  	},
    26  	{
    27  		arr: []byte{0x01, 0x02, 0x03, 0x04, 0x05},
    28  		rev: []byte{0x05, 0x04, 0x03, 0x02, 0x01},
    29  	},
    30  }
    31  
    32  func TestCopyReverse(t *testing.T) {
    33  	for _, tc := range testCases {
    34  		arg := bytes.Clone(tc.arr)
    35  		require.Equal(t, tc.arr, arg)
    36  
    37  		have := CopyReverse(arg)
    38  		require.Equal(t, tc.rev, have)
    39  
    40  		// test that argument was copied
    41  		for i := range have {
    42  			have[i] = ^have[i]
    43  		}
    44  		require.Equal(t, tc.arr, arg)
    45  
    46  		Reverse(arg)
    47  		require.Equal(t, tc.rev, arg)
    48  		if len(tc.arr) > 1 {
    49  			require.NotEqual(t, tc.arr, arg)
    50  		}
    51  	}
    52  }
    53  
    54  func TestClean(t *testing.T) {
    55  	for _, tc := range testCases[1:] { // Empty one will be equal.
    56  		cp := bytes.Clone(tc.arr)
    57  		Clean(cp)
    58  		require.NotEqual(t, tc.arr, cp)
    59  	}
    60  }