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 }