v / vlib / encoding / binary / little_endian_test.v
215 lines · 180 sloc · 8.05 KB · e2e5cf8db56f3562c7baa735061690be936bdf3e
Raw
1module binary
2
3// Little Endian Tests
4
5fn test_little_endian_u16() {
6 assert little_endian_u16([u8(0), 0]) == u16(0)
7 assert little_endian_u16([u8(5), 4]) == u16(0x0405)
8 assert little_endian_u16([u8(0x35), 0x57]) == u16(0x5735)
9 assert little_endian_u16([u8(0x35), 0x57]) != u16(0x3557)
10}
11
12fn test_little_endian_u16_at() {
13 assert little_endian_u16_at([u8(1), 0, 0, 1], 1) == u16(0)
14 assert little_endian_u16_at([u8(5), 4, 9, 1], 1) == u16(0x0904)
15 assert little_endian_u16_at([u8(0xf8), 0xa2, 0x9e, 0x21], 1) == u16(0x9ea2)
16 assert little_endian_u16_at([u8(0xf8), 0xa2, 0x9e, 0x21], 1) != u16(0xa29e)
17}
18
19fn test_little_endian_u16_end() {
20 assert little_endian_u16_end([u8(1), 0, 0, 1]) == u16(0x0100)
21 assert little_endian_u16_end([u8(5), 4, 9, 1]) == u16(0x0109)
22 assert little_endian_u16_end([u8(0xf8), 0xa2, 0x9e, 0x21]) == u16(0x219e)
23 assert little_endian_u16_end([u8(0xf8), 0xa2, 0x9e, 0x21]) != u16(0x9e21)
24}
25
26fn test_little_endian_put_u16() {
27 mut buf := []u8{len: 2}
28 little_endian_put_u16(mut buf, 0x8725)
29 assert buf == [u8(0x25), 0x87]
30 little_endian_put_u16(mut buf, 0)
31 assert buf == [u8(0), 0]
32 little_endian_put_u16(mut buf, 0xfdff)
33 assert buf == [u8(0xff), 0xfd]
34}
35
36fn test_little_endian_put_u16_at() {
37 mut buf := []u8{len: 4}
38 little_endian_put_u16_at(mut buf, 0x8725, 1)
39 assert buf == [u8(0), 0x25, 0x87, 0]
40
41 buf = []u8{len: 4}
42 little_endian_put_u16_at(mut buf, 1, 1)
43 assert buf == [u8(0), 1, 0, 0]
44
45 buf = []u8{len: 4}
46 little_endian_put_u16_at(mut buf, 0xfdff, 1)
47 assert buf == [u8(0), 0xff, 0xfd, 0]
48}
49
50fn test_little_endian_put_u16_end() {
51 mut buf := []u8{len: 4}
52 little_endian_put_u16_end(mut buf, 0x8725)
53 assert buf == [u8(0), 0, 0x25, 0x87]
54
55 buf = []u8{len: 4}
56 little_endian_put_u16_end(mut buf, 1)
57 assert buf == [u8(0), 0, 1, 0]
58
59 buf = []u8{len: 4}
60 little_endian_put_u16_end(mut buf, 0xfdff)
61 assert buf == [u8(0), 0, 0xff, 0xfd]
62}
63
64fn test_little_endian_get_u16() {
65 assert little_endian_get_u16(u16(256)) == [u8(0), 1]
66 assert little_endian_get_u16(u16(0x0405)) == [u8(5), 4]
67 assert little_endian_get_u16(u16(0x5735)) == [u8(0x35), 0x57]
68 assert little_endian_get_u16(u16(0x3557)) != [u8(0x35), 0x57]
69}
70
71fn test_little_endian_u32() {
72 assert little_endian_u32([u8(0), 0, 0, 0]) == u32(0)
73 assert little_endian_u32([u8(5), 4, 9, 1]) == u32(0x01090405)
74 assert little_endian_u32([u8(0xf8), 0xa2, 0x9e, 0x21]) == u32(0x219ea2f8)
75 assert little_endian_u32([u8(0xf8), 0xa2, 0x9e, 0x21]) != u32(0xf8a29e21)
76}
77
78fn test_little_endian_u32_at() {
79 assert little_endian_u32_at([u8(1), 0, 0, 0, 0, 0, 0, 0], 1) == u32(0)
80 assert little_endian_u32_at([u8(5), 4, 9, 1, 7, 3, 6, 8], 1) == u32(0x07010904)
81 assert little_endian_u32_at([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f], 1) == u32(0x7f219ea2)
82 assert little_endian_u32_at([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f], 1) != u32(0xa29e217f)
83}
84
85fn test_little_endian_u32_end() {
86 assert little_endian_u32_end([u8(1), 0, 0, 0, 0, 0, 0, 0]) == u32(0)
87 assert little_endian_u32_end([u8(5), 4, 9, 1, 7, 3, 6, 8]) == u32(0x08060307)
88 assert little_endian_u32_end([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f]) == u32(0x8f8e9f7f)
89 assert little_endian_u32_end([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f]) != u32(0x7f9f8e8f)
90}
91
92fn test_little_endian_put_u32() {
93 mut buf := []u8{len: 4}
94 little_endian_put_u32(mut buf, 0x872fea95)
95 assert buf == [u8(0x95), 0xea, 0x2f, 0x87]
96 little_endian_put_u32(mut buf, 0)
97 assert buf == [u8(0), 0, 0, 0]
98 little_endian_put_u32(mut buf, 0xfdf2e68f)
99 assert buf == [u8(0x8f), 0xe6, 0xf2, 0xfd]
100}
101
102fn test_little_endian_put_u32_at() {
103 mut buf := []u8{len: 8}
104 little_endian_put_u32_at(mut buf, 0x872fea95, 1)
105 assert buf == [u8(0), 0x95, 0xea, 0x2f, 0x87, 0, 0, 0]
106
107 buf = []u8{len: 8}
108 little_endian_put_u32_at(mut buf, 1, 1)
109 assert buf == [u8(0), 1, 0, 0, 0, 0, 0, 0]
110
111 buf = []u8{len: 8}
112 little_endian_put_u32_at(mut buf, 0xfdf2e68f, 1)
113 assert buf == [u8(0), 0x8f, 0xe6, 0xf2, 0xfd, 0, 0, 0]
114}
115
116fn test_little_endian_put_u32_end() {
117 mut buf := []u8{len: 8}
118 little_endian_put_u32_end(mut buf, 0x872fea95)
119 assert buf == [u8(0), 0, 0, 0, 0x95, 0xea, 0x2f, 0x87]
120
121 buf = []u8{len: 8}
122 little_endian_put_u32_end(mut buf, 1)
123 assert buf == [u8(0), 0, 0, 0, 1, 0, 0, 0]
124
125 buf = []u8{len: 8}
126 little_endian_put_u32_end(mut buf, 0xfdf2e68f)
127 assert buf == [u8(0), 0, 0, 0, 0x8f, 0xe6, 0xf2, 0xfd]
128}
129
130fn test_little_endian_get_u32() {
131 assert little_endian_get_u32(u32(16777216)) == [u8(0), 0, 0, 1]
132 assert little_endian_get_u32(u32(0x01090405)) == [u8(5), 4, 9, 1]
133 assert little_endian_get_u32(u32(0x2192a2f8)) == [u8(0xf8), 0xa2, 0x92, 0x21]
134 assert little_endian_get_u32(u32(0xf8a29e21)) != [u8(0xf8), 0xa2, 0x9e, 0x21]
135}
136
137fn test_little_endian_u64() {
138 assert little_endian_u64([u8(0), 0, 0, 0, 0, 0, 0, 0]) == u64(0)
139 assert little_endian_u64([u8(5), 4, 9, 1, 7, 3, 6, 8]) == u64(0x0806030701090405)
140 assert little_endian_u64([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f]) == u64(0x8f8e9f7f219ea2f8)
141 assert little_endian_u64([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f]) != u64(0xf8a29e217f9f8e8f)
142}
143
144fn test_little_endian_u64_at() {
145 assert little_endian_u64_at([u8(1), 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1], 1) == u64(0)
146 assert little_endian_u64_at([u8(0), 5, 4, 9, 1, 7, 3, 6, 8, 0, 0, 0, 0, 0, 0, 0], 1) == u64(0x0806030701090405)
147 assert little_endian_u64_at([u8(0), 0xf8, 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f, 0, 0, 0,
148 0, 0, 0, 0], 1) == u64(0x8f8e9f7f219ea2f8)
149 assert little_endian_u64_at([u8(0), 0xf8, 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f, 0, 0, 0,
150 0, 0, 0, 0], 1) != u64(0xf8a29e217f9f8e8f)
151}
152
153fn test_little_endian_f32_at() {
154 assert little_endian_f32_at([u8(1), 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1], 1) == f32(0)
155 /*
156 assert little_endian_f32_at([u8(0), 5, 4, 9, 1, 7, 3, 6, 8, 0, 0, 0, 0, 0, 0, 0],
157 1).eq_epsilon(0.00000000000000000000000000000000002516)
158 */
159}
160
161fn test_little_endian_u64_end() {
162 assert little_endian_u64_end([u8(1), 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]) == u64(0)
163 assert little_endian_u64_end([u8(0), 0, 0, 0, 0, 0, 0, 0, 5, 4, 9, 1, 7, 3, 6, 8]) == u64(0x0806030701090405)
164 assert little_endian_u64_end([u8(0), 0, 0, 0, 0, 0, 0, 0, 0xf8, 0xa2, 0x9e, 0x21, 0x7f, 0x9f,
165 0x8e, 0x8f]) == u64(0x8f8e9f7f219ea2f8)
166 assert little_endian_u64_end([u8(0), 0, 0, 0, 0, 0, 0, 0, 0xf8, 0xa2, 0x9e, 0x21, 0x7f, 0x9f,
167 0x8e, 0x8f]) != u64(0xf8a29e217f9f8e8f)
168}
169
170fn test_little_endian_put_u64() {
171 mut buf := []u8{len: 8}
172 little_endian_put_u64(mut buf, 0x872fea95fdf2e68f)
173 assert buf == [u8(0x8f), 0xe6, 0xf2, 0xfd, 0x95, 0xea, 0x2f, 0x87]
174 little_endian_put_u64(mut buf, 0)
175 assert buf == [u8(0), 0, 0, 0, 0, 0, 0, 0]
176 little_endian_put_u64(mut buf, 0xfdf2e68f8e9f7f21)
177 assert buf == [u8(0x21), 0x7f, 0x9f, 0x8e, 0x8f, 0xe6, 0xf2, 0xfd]
178}
179
180fn test_little_endian_put_u64_at() {
181 mut buf := []u8{len: 16}
182 little_endian_put_u64_at(mut buf, 0x872fea95fdf2e68f, 1)
183 assert buf == [u8(0), 0x8f, 0xe6, 0xf2, 0xfd, 0x95, 0xea, 0x2f, 0x87, 0, 0, 0, 0, 0, 0, 0]
184
185 buf = []u8{len: 16}
186 little_endian_put_u64_at(mut buf, 1, 1)
187 assert buf == [u8(0), 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
188
189 buf = []u8{len: 16}
190 little_endian_put_u64_at(mut buf, 0xfdf2e68f8e9f7f21, 1)
191 assert buf == [u8(0), 0x21, 0x7f, 0x9f, 0x8e, 0x8f, 0xe6, 0xf2, 0xfd, 0, 0, 0, 0, 0, 0, 0]
192}
193
194fn test_little_endian_put_u64_end() {
195 mut buf := []u8{len: 16}
196 little_endian_put_u64_end(mut buf, 0x872fea95fdf2e68f)
197 assert buf == [u8(0), 0, 0, 0, 0, 0, 0, 0, 0x8f, 0xe6, 0xf2, 0xfd, 0x95, 0xea, 0x2f, 0x87]
198
199 buf = []u8{len: 16}
200 little_endian_put_u64_end(mut buf, 1)
201 assert buf == [u8(0), 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
202
203 buf = []u8{len: 16}
204 little_endian_put_u64_end(mut buf, 0xfdf2e68f8e9f7f21)
205 assert buf == [u8(0), 0, 0, 0, 0, 0, 0, 0, 0x21, 0x7f, 0x9f, 0x8e, 0x8f, 0xe6, 0xf2, 0xfd]
206}
207
208fn test_little_endian_get_u64() {
209 assert little_endian_get_u64(u64(72057594037927936)) == [u8(0), 0, 0, 0, 0, 0, 0, 1]
210 assert little_endian_get_u64(u64(0x0806030701090405)) == [u8(5), 4, 9, 1, 7, 3, 6, 8]
211 assert little_endian_get_u64(u64(0x8f8e9f7f219ea2f8)) == [u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f,
212 0x9f, 0x8e, 0x8f]
213 assert little_endian_get_u64(u64(0xf8a29e217f9f8e8f)) != [u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f,
214 0x9f, 0x8e, 0x8f]
215}
216