v

Зеркало из https://github.com/vlang/v
Форк
0
/
little_endian_test.v 
220 строк · 8.1 Кб
1
module binary
2

3
// Little Endian Tests
4

5
fn 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

12
fn 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

19
fn 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

26
fn 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

36
fn 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

50
fn 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

64
fn 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

71
fn 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

78
fn 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],
82
		1) == u32(0x7f219ea2)
83
	assert little_endian_u32_at([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f],
84
		1) != u32(0xa29e217f)
85
}
86

87
fn test_little_endian_u32_end() {
88
	assert little_endian_u32_end([u8(1), 0, 0, 0, 0, 0, 0, 0]) == u32(0)
89
	assert little_endian_u32_end([u8(5), 4, 9, 1, 7, 3, 6, 8]) == u32(0x08060307)
90
	assert little_endian_u32_end([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f]) == u32(0x8f8e9f7f)
91
	assert little_endian_u32_end([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f]) != u32(0x7f9f8e8f)
92
}
93

94
fn test_little_endian_put_u32() {
95
	mut buf := []u8{len: 4}
96
	little_endian_put_u32(mut buf, 0x872fea95)
97
	assert buf == [u8(0x95), 0xea, 0x2f, 0x87]
98
	little_endian_put_u32(mut buf, 0)
99
	assert buf == [u8(0), 0, 0, 0]
100
	little_endian_put_u32(mut buf, 0xfdf2e68f)
101
	assert buf == [u8(0x8f), 0xe6, 0xf2, 0xfd]
102
}
103

104
fn test_little_endian_put_u32_at() {
105
	mut buf := []u8{len: 8}
106
	little_endian_put_u32_at(mut buf, 0x872fea95, 1)
107
	assert buf == [u8(0), 0x95, 0xea, 0x2f, 0x87, 0, 0, 0]
108

109
	buf = []u8{len: 8}
110
	little_endian_put_u32_at(mut buf, 1, 1)
111
	assert buf == [u8(0), 1, 0, 0, 0, 0, 0, 0]
112

113
	buf = []u8{len: 8}
114
	little_endian_put_u32_at(mut buf, 0xfdf2e68f, 1)
115
	assert buf == [u8(0), 0x8f, 0xe6, 0xf2, 0xfd, 0, 0, 0]
116
}
117

118
fn test_little_endian_put_u32_end() {
119
	mut buf := []u8{len: 8}
120
	little_endian_put_u32_end(mut buf, 0x872fea95)
121
	assert buf == [u8(0), 0, 0, 0, 0x95, 0xea, 0x2f, 0x87]
122

123
	buf = []u8{len: 8}
124
	little_endian_put_u32_end(mut buf, 1)
125
	assert buf == [u8(0), 0, 0, 0, 1, 0, 0, 0]
126

127
	buf = []u8{len: 8}
128
	little_endian_put_u32_end(mut buf, 0xfdf2e68f)
129
	assert buf == [u8(0), 0, 0, 0, 0x8f, 0xe6, 0xf2, 0xfd]
130
}
131

132
fn test_little_endian_get_u32() {
133
	assert little_endian_get_u32(u32(16777216)) == [u8(0), 0, 0, 1]
134
	assert little_endian_get_u32(u32(0x01090405)) == [u8(5), 4, 9, 1]
135
	assert little_endian_get_u32(u32(0x2192a2f8)) == [u8(0xf8), 0xa2, 0x92, 0x21]
136
	assert little_endian_get_u32(u32(0xf8a29e21)) != [u8(0xf8), 0xa2, 0x9e, 0x21]
137
}
138

139
fn test_little_endian_u64() {
140
	assert little_endian_u64([u8(0), 0, 0, 0, 0, 0, 0, 0]) == u64(0)
141
	assert little_endian_u64([u8(5), 4, 9, 1, 7, 3, 6, 8]) == u64(0x0806030701090405)
142
	assert little_endian_u64([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f]) == u64(0x8f8e9f7f219ea2f8)
143
	assert little_endian_u64([u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f]) != u64(0xf8a29e217f9f8e8f)
144
}
145

146
fn test_little_endian_u64_at() {
147
	assert little_endian_u64_at([u8(1), 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1],
148
		1) == u64(0)
149
	assert little_endian_u64_at([u8(0), 5, 4, 9, 1, 7, 3, 6, 8, 0, 0, 0, 0, 0, 0, 0],
150
		1) == u64(0x0806030701090405)
151
	assert little_endian_u64_at([u8(0), 0xf8, 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f, 0, 0, 0,
152
		0, 0, 0, 0], 1) == u64(0x8f8e9f7f219ea2f8)
153
	assert little_endian_u64_at([u8(0), 0xf8, 0xa2, 0x9e, 0x21, 0x7f, 0x9f, 0x8e, 0x8f, 0, 0, 0,
154
		0, 0, 0, 0], 1) != u64(0xf8a29e217f9f8e8f)
155
}
156

157
fn test_little_endian_f32_at() {
158
	assert little_endian_f32_at([u8(1), 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1],
159
		1) == f32(0)
160
	/*
161
	assert little_endian_f32_at([u8(0), 5, 4, 9, 1, 7, 3, 6, 8, 0, 0, 0, 0, 0, 0, 0],
162
		1).eq_epsilon(0.00000000000000000000000000000000002516)
163
		*/
164
}
165

166
fn test_little_endian_u64_end() {
167
	assert little_endian_u64_end([u8(1), 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]) == u64(0)
168
	assert little_endian_u64_end([u8(0), 0, 0, 0, 0, 0, 0, 0, 5, 4, 9, 1, 7, 3, 6, 8]) == u64(0x0806030701090405)
169
	assert little_endian_u64_end([u8(0), 0, 0, 0, 0, 0, 0, 0, 0xf8, 0xa2, 0x9e, 0x21, 0x7f, 0x9f,
170
		0x8e, 0x8f]) == u64(0x8f8e9f7f219ea2f8)
171
	assert little_endian_u64_end([u8(0), 0, 0, 0, 0, 0, 0, 0, 0xf8, 0xa2, 0x9e, 0x21, 0x7f, 0x9f,
172
		0x8e, 0x8f]) != u64(0xf8a29e217f9f8e8f)
173
}
174

175
fn test_little_endian_put_u64() {
176
	mut buf := []u8{len: 8}
177
	little_endian_put_u64(mut buf, 0x872fea95fdf2e68f)
178
	assert buf == [u8(0x8f), 0xe6, 0xf2, 0xfd, 0x95, 0xea, 0x2f, 0x87]
179
	little_endian_put_u64(mut buf, 0)
180
	assert buf == [u8(0), 0, 0, 0, 0, 0, 0, 0]
181
	little_endian_put_u64(mut buf, 0xfdf2e68f8e9f7f21)
182
	assert buf == [u8(0x21), 0x7f, 0x9f, 0x8e, 0x8f, 0xe6, 0xf2, 0xfd]
183
}
184

185
fn test_little_endian_put_u64_at() {
186
	mut buf := []u8{len: 16}
187
	little_endian_put_u64_at(mut buf, 0x872fea95fdf2e68f, 1)
188
	assert buf == [u8(0), 0x8f, 0xe6, 0xf2, 0xfd, 0x95, 0xea, 0x2f, 0x87, 0, 0, 0, 0, 0, 0, 0]
189

190
	buf = []u8{len: 16}
191
	little_endian_put_u64_at(mut buf, 1, 1)
192
	assert buf == [u8(0), 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
193

194
	buf = []u8{len: 16}
195
	little_endian_put_u64_at(mut buf, 0xfdf2e68f8e9f7f21, 1)
196
	assert buf == [u8(0), 0x21, 0x7f, 0x9f, 0x8e, 0x8f, 0xe6, 0xf2, 0xfd, 0, 0, 0, 0, 0, 0, 0]
197
}
198

199
fn test_little_endian_put_u64_end() {
200
	mut buf := []u8{len: 16}
201
	little_endian_put_u64_end(mut buf, 0x872fea95fdf2e68f)
202
	assert buf == [u8(0), 0, 0, 0, 0, 0, 0, 0, 0x8f, 0xe6, 0xf2, 0xfd, 0x95, 0xea, 0x2f, 0x87]
203

204
	buf = []u8{len: 16}
205
	little_endian_put_u64_end(mut buf, 1)
206
	assert buf == [u8(0), 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
207

208
	buf = []u8{len: 16}
209
	little_endian_put_u64_end(mut buf, 0xfdf2e68f8e9f7f21)
210
	assert buf == [u8(0), 0, 0, 0, 0, 0, 0, 0, 0x21, 0x7f, 0x9f, 0x8e, 0x8f, 0xe6, 0xf2, 0xfd]
211
}
212

213
fn test_little_endian_get_u64() {
214
	assert little_endian_get_u64(u64(72057594037927936)) == [u8(0), 0, 0, 0, 0, 0, 0, 1]
215
	assert little_endian_get_u64(u64(0x0806030701090405)) == [u8(5), 4, 9, 1, 7, 3, 6, 8]
216
	assert little_endian_get_u64(u64(0x8f8e9f7f219ea2f8)) == [u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f,
217
		0x9f, 0x8e, 0x8f]
218
	assert little_endian_get_u64(u64(0xf8a29e217f9f8e8f)) != [u8(0xf8), 0xa2, 0x9e, 0x21, 0x7f,
219
		0x9f, 0x8e, 0x8f]
220
}
221

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.