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