Skip to content

Commit 0d471d2

Browse files
committed
Add unit tests for bytesutils
1 parent 6f931d9 commit 0d471d2

1 file changed

Lines changed: 104 additions & 0 deletions

File tree

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
// Package byteutils provides helper utilities for working with bytes
2+
package byteutils
3+
4+
import (
5+
"bytes"
6+
"fmt"
7+
"reflect"
8+
"testing"
9+
)
10+
11+
func TestLeftPadTo32Bytes(t *testing.T) {
12+
value32 := []byte{89, 178, 1, 195, 69, 50, 81, 72, 28, 86, 134, 50, 240, 65, 54, 243,
13+
62, 118, 195, 210, 184, 57, 206, 33, 48, 3, 81, 73, 125, 189, 39, 147,
14+
}
15+
16+
tests := map[string]struct {
17+
value []byte
18+
expectedResult []byte
19+
expectedError error
20+
}{
21+
"valid case of 32-bytes value": {
22+
value: value32,
23+
expectedResult: value32,
24+
},
25+
"valid case of 31-bytes value": {
26+
value: value32[:31],
27+
expectedResult: append([]byte{0}, value32[:31]...),
28+
},
29+
"invalid case of 33-bytes value": {
30+
value: append([]byte{16}, value32...),
31+
expectedResult: []byte{},
32+
expectedError: fmt.Errorf("cannot pad 33 byte array to 32 bytes"),
33+
},
34+
}
35+
36+
for testName, test := range tests {
37+
t.Run(testName, func(t *testing.T) {
38+
actualResult, err := LeftPadTo32Bytes(test.value)
39+
40+
if !bytes.Equal(test.expectedResult, actualResult) {
41+
t.Errorf(
42+
"unexpected result\nexpected: [%+v]\nactual: [%+v]",
43+
test.expectedResult,
44+
actualResult,
45+
)
46+
}
47+
48+
if !reflect.DeepEqual(test.expectedError, err) {
49+
t.Errorf(
50+
"unexpected error\nexpected: [%+v]\nactual: [%+v]",
51+
test.expectedError,
52+
err,
53+
)
54+
}
55+
})
56+
}
57+
}
58+
59+
func TestReverse(t *testing.T) {
60+
tests := map[string]struct {
61+
value []byte
62+
expectedResult []byte
63+
}{
64+
"empty": {
65+
value: []byte{},
66+
expectedResult: []byte{},
67+
},
68+
"one item": {
69+
value: []byte{84},
70+
expectedResult: []byte{84},
71+
},
72+
"odd number of items": {
73+
value: []byte{12, 85, 96},
74+
expectedResult: []byte{96, 85, 12},
75+
},
76+
"even number of items": {
77+
value: []byte{75, 156, 96, 2},
78+
expectedResult: []byte{2, 96, 156, 75},
79+
},
80+
"leading zeros": {
81+
value: []byte{0, 0, 213, 52, 7},
82+
expectedResult: []byte{7, 52, 213, 0, 0},
83+
},
84+
"trailing zeros": {
85+
value: []byte{8, 78, 255, 0, 0},
86+
expectedResult: []byte{0, 0, 255, 78, 8},
87+
},
88+
}
89+
90+
for testName, test := range tests {
91+
t.Run(testName, func(t *testing.T) {
92+
actualResult := Reverse(test.value)
93+
94+
if !bytes.Equal(test.expectedResult, actualResult) {
95+
t.Errorf(
96+
"unexpected result\nexpected: [%+v]\nactual: [%+v]",
97+
test.expectedResult,
98+
actualResult,
99+
)
100+
}
101+
102+
})
103+
}
104+
}

0 commit comments

Comments
 (0)