]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/utility/binary_test.cpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / utility / binary_test.cpp
1 /*=============================================================================
2 Copyright (c) 2006, 2007 Matthew Calabrese
3
4 Use, modification and distribution is subject to the Boost Software
5 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 http://www.boost.org/LICENSE_1_0.txt)
7 ==============================================================================*/
8
9 #include <boost/test/minimal.hpp>
10 #include <boost/utility/binary.hpp>
11 #include <algorithm>
12 #include <cstddef>
13
14 #ifdef BOOST_MSVC
15 #pragma warning(disable:4996) // warning C4996: 'std::equal': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
16 #endif
17
18 /*
19 Note: This file tests every single valid bit-grouping on its own, and some
20 random combinations of bit-groupings.
21 */
22
23 std::size_t const num_random_test_values = 32;
24
25 // Note: These hex values should all correspond with the binary array below
26 unsigned int const random_unsigned_ints_hex[num_random_test_values]
27 = { 0x0103u, 0x77ebu, 0x5f36u, 0x1f18u, 0xc530u, 0xa73au, 0xd6f8u, 0x0919u
28 , 0xfbb0u, 0x3e7cu, 0xd0e9u, 0x22c8u, 0x724eu, 0x14fau, 0xd98eu, 0x40b5
29 , 0xeba0u, 0xfe50u, 0x688au, 0x1b05u, 0x5f9cu, 0xe4fcu, 0xa7b8u, 0xd3acu
30 , 0x1dddu, 0xbf04u, 0x8352u, 0xe89cu, 0x7506u, 0xe767u, 0xf489u, 0xe167
31 };
32
33 unsigned int const random_unsigned_ints_binary[num_random_test_values]
34 = { BOOST_BINARY( 0 00010000 0011 ), BOOST_BINARY( 0 11101 1111 101011 )
35 , BOOST_BINARY( 010111 1100110 1 1 0 ), BOOST_BINARY( 000 1 11110 00 11000 )
36 , BOOST_BINARY( 110 001010 0110 000 ), BOOST_BINARY( 1010 01110011 1010 )
37 , BOOST_BINARY( 11 010 1 101111 1000 ), BOOST_BINARY( 0000 100100 0110 01 )
38 , BOOST_BINARY( 1111 101110 11 0000 ), BOOST_BINARY( 00111110 01111100 )
39 , BOOST_BINARY( 11 010 000111 01001 ), BOOST_BINARY( 00100 010110 01000 )
40 , BOOST_BINARY( 01 11001001 001110 ), BOOST_BINARY( 0010 1001111 1010 )
41 , BOOST_BINARY( 1101 1 00110 0 01110 ), BOOST_BINARY( 100 000 01011010 1 )
42 , BOOST_BINARY( 11 1010 1110 1000 00 ), BOOST_BINARY( 11111 110010 10000 )
43 , BOOST_BINARY( 01101 00010 001010 ), BOOST_BINARY( 000 11011 000001 01 )
44 , BOOST_BINARY( 01 01111 1100111 00 ), BOOST_BINARY( 1 110010 0111111 00 )
45 , BOOST_BINARY( 101 0011 11 01110 00 ), BOOST_BINARY( 110100 1 110101 100 )
46 , BOOST_BINARY( 00 1110111 011 101 ), BOOST_BINARY( 1011 1111 00000 100 )
47 , BOOST_BINARY( 1000 00110 101 0010 ), BOOST_BINARY( 1110 10001 001110 0 )
48 , BOOST_BINARY( 011 1010100 000 110 ), BOOST_BINARY( 1110 0111 01100 111 )
49 , BOOST_BINARY( 11110 10010 001001 ), BOOST_BINARY( 11 1000010 1100 111 )
50 };
51
52 unsigned int const unsigned_ints_1_bit[2] =
53 { BOOST_BINARY( 0 )
54 , BOOST_BINARY( 1 )
55 };
56
57 unsigned int const unsigned_ints_2_bits[4] =
58 { BOOST_BINARY( 00 )
59 , BOOST_BINARY( 01 )
60 , BOOST_BINARY( 10 )
61 , BOOST_BINARY( 11 )
62 };
63
64 unsigned int const unsigned_ints_3_bits[8] =
65 { BOOST_BINARY( 000 )
66 , BOOST_BINARY( 001 )
67 , BOOST_BINARY( 010 )
68 , BOOST_BINARY( 011 )
69 , BOOST_BINARY( 100 )
70 , BOOST_BINARY( 101 )
71 , BOOST_BINARY( 110 )
72 , BOOST_BINARY( 111 )
73 };
74
75 unsigned int const unsigned_ints_4_bits[16] =
76 { BOOST_BINARY( 0000 )
77 , BOOST_BINARY( 0001 )
78 , BOOST_BINARY( 0010 )
79 , BOOST_BINARY( 0011 )
80 , BOOST_BINARY( 0100 )
81 , BOOST_BINARY( 0101 )
82 , BOOST_BINARY( 0110 )
83 , BOOST_BINARY( 0111 )
84 , BOOST_BINARY( 1000 )
85 , BOOST_BINARY( 1001 )
86 , BOOST_BINARY( 1010 )
87 , BOOST_BINARY( 1011 )
88 , BOOST_BINARY( 1100 )
89 , BOOST_BINARY( 1101 )
90 , BOOST_BINARY( 1110 )
91 , BOOST_BINARY( 1111 )
92 };
93
94 unsigned int const unsigned_ints_5_bits[32] =
95 { BOOST_BINARY( 00000 )
96 , BOOST_BINARY( 00001 )
97 , BOOST_BINARY( 00010 )
98 , BOOST_BINARY( 00011 )
99 , BOOST_BINARY( 00100 )
100 , BOOST_BINARY( 00101 )
101 , BOOST_BINARY( 00110 )
102 , BOOST_BINARY( 00111 )
103 , BOOST_BINARY( 01000 )
104 , BOOST_BINARY( 01001 )
105 , BOOST_BINARY( 01010 )
106 , BOOST_BINARY( 01011 )
107 , BOOST_BINARY( 01100 )
108 , BOOST_BINARY( 01101 )
109 , BOOST_BINARY( 01110 )
110 , BOOST_BINARY( 01111 )
111 , BOOST_BINARY( 10000 )
112 , BOOST_BINARY( 10001 )
113 , BOOST_BINARY( 10010 )
114 , BOOST_BINARY( 10011 )
115 , BOOST_BINARY( 10100 )
116 , BOOST_BINARY( 10101 )
117 , BOOST_BINARY( 10110 )
118 , BOOST_BINARY( 10111 )
119 , BOOST_BINARY( 11000 )
120 , BOOST_BINARY( 11001 )
121 , BOOST_BINARY( 11010 )
122 , BOOST_BINARY( 11011 )
123 , BOOST_BINARY( 11100 )
124 , BOOST_BINARY( 11101 )
125 , BOOST_BINARY( 11110 )
126 , BOOST_BINARY( 11111 )
127 };
128
129 unsigned int const unsigned_ints_6_bits[64] =
130 { BOOST_BINARY( 000000 )
131 , BOOST_BINARY( 000001 )
132 , BOOST_BINARY( 000010 )
133 , BOOST_BINARY( 000011 )
134 , BOOST_BINARY( 000100 )
135 , BOOST_BINARY( 000101 )
136 , BOOST_BINARY( 000110 )
137 , BOOST_BINARY( 000111 )
138 , BOOST_BINARY( 001000 )
139 , BOOST_BINARY( 001001 )
140 , BOOST_BINARY( 001010 )
141 , BOOST_BINARY( 001011 )
142 , BOOST_BINARY( 001100 )
143 , BOOST_BINARY( 001101 )
144 , BOOST_BINARY( 001110 )
145 , BOOST_BINARY( 001111 )
146 , BOOST_BINARY( 010000 )
147 , BOOST_BINARY( 010001 )
148 , BOOST_BINARY( 010010 )
149 , BOOST_BINARY( 010011 )
150 , BOOST_BINARY( 010100 )
151 , BOOST_BINARY( 010101 )
152 , BOOST_BINARY( 010110 )
153 , BOOST_BINARY( 010111 )
154 , BOOST_BINARY( 011000 )
155 , BOOST_BINARY( 011001 )
156 , BOOST_BINARY( 011010 )
157 , BOOST_BINARY( 011011 )
158 , BOOST_BINARY( 011100 )
159 , BOOST_BINARY( 011101 )
160 , BOOST_BINARY( 011110 )
161 , BOOST_BINARY( 011111 )
162 , BOOST_BINARY( 100000 )
163 , BOOST_BINARY( 100001 )
164 , BOOST_BINARY( 100010 )
165 , BOOST_BINARY( 100011 )
166 , BOOST_BINARY( 100100 )
167 , BOOST_BINARY( 100101 )
168 , BOOST_BINARY( 100110 )
169 , BOOST_BINARY( 100111 )
170 , BOOST_BINARY( 101000 )
171 , BOOST_BINARY( 101001 )
172 , BOOST_BINARY( 101010 )
173 , BOOST_BINARY( 101011 )
174 , BOOST_BINARY( 101100 )
175 , BOOST_BINARY( 101101 )
176 , BOOST_BINARY( 101110 )
177 , BOOST_BINARY( 101111 )
178 , BOOST_BINARY( 110000 )
179 , BOOST_BINARY( 110001 )
180 , BOOST_BINARY( 110010 )
181 , BOOST_BINARY( 110011 )
182 , BOOST_BINARY( 110100 )
183 , BOOST_BINARY( 110101 )
184 , BOOST_BINARY( 110110 )
185 , BOOST_BINARY( 110111 )
186 , BOOST_BINARY( 111000 )
187 , BOOST_BINARY( 111001 )
188 , BOOST_BINARY( 111010 )
189 , BOOST_BINARY( 111011 )
190 , BOOST_BINARY( 111100 )
191 , BOOST_BINARY( 111101 )
192 , BOOST_BINARY( 111110 )
193 , BOOST_BINARY( 111111 )
194 };
195
196 unsigned int const unsigned_ints_7_bits[128] =
197 { BOOST_BINARY( 0000000 )
198 , BOOST_BINARY( 0000001 )
199 , BOOST_BINARY( 0000010 )
200 , BOOST_BINARY( 0000011 )
201 , BOOST_BINARY( 0000100 )
202 , BOOST_BINARY( 0000101 )
203 , BOOST_BINARY( 0000110 )
204 , BOOST_BINARY( 0000111 )
205 , BOOST_BINARY( 0001000 )
206 , BOOST_BINARY( 0001001 )
207 , BOOST_BINARY( 0001010 )
208 , BOOST_BINARY( 0001011 )
209 , BOOST_BINARY( 0001100 )
210 , BOOST_BINARY( 0001101 )
211 , BOOST_BINARY( 0001110 )
212 , BOOST_BINARY( 0001111 )
213 , BOOST_BINARY( 0010000 )
214 , BOOST_BINARY( 0010001 )
215 , BOOST_BINARY( 0010010 )
216 , BOOST_BINARY( 0010011 )
217 , BOOST_BINARY( 0010100 )
218 , BOOST_BINARY( 0010101 )
219 , BOOST_BINARY( 0010110 )
220 , BOOST_BINARY( 0010111 )
221 , BOOST_BINARY( 0011000 )
222 , BOOST_BINARY( 0011001 )
223 , BOOST_BINARY( 0011010 )
224 , BOOST_BINARY( 0011011 )
225 , BOOST_BINARY( 0011100 )
226 , BOOST_BINARY( 0011101 )
227 , BOOST_BINARY( 0011110 )
228 , BOOST_BINARY( 0011111 )
229 , BOOST_BINARY( 0100000 )
230 , BOOST_BINARY( 0100001 )
231 , BOOST_BINARY( 0100010 )
232 , BOOST_BINARY( 0100011 )
233 , BOOST_BINARY( 0100100 )
234 , BOOST_BINARY( 0100101 )
235 , BOOST_BINARY( 0100110 )
236 , BOOST_BINARY( 0100111 )
237 , BOOST_BINARY( 0101000 )
238 , BOOST_BINARY( 0101001 )
239 , BOOST_BINARY( 0101010 )
240 , BOOST_BINARY( 0101011 )
241 , BOOST_BINARY( 0101100 )
242 , BOOST_BINARY( 0101101 )
243 , BOOST_BINARY( 0101110 )
244 , BOOST_BINARY( 0101111 )
245 , BOOST_BINARY( 0110000 )
246 , BOOST_BINARY( 0110001 )
247 , BOOST_BINARY( 0110010 )
248 , BOOST_BINARY( 0110011 )
249 , BOOST_BINARY( 0110100 )
250 , BOOST_BINARY( 0110101 )
251 , BOOST_BINARY( 0110110 )
252 , BOOST_BINARY( 0110111 )
253 , BOOST_BINARY( 0111000 )
254 , BOOST_BINARY( 0111001 )
255 , BOOST_BINARY( 0111010 )
256 , BOOST_BINARY( 0111011 )
257 , BOOST_BINARY( 0111100 )
258 , BOOST_BINARY( 0111101 )
259 , BOOST_BINARY( 0111110 )
260 , BOOST_BINARY( 0111111 )
261 , BOOST_BINARY( 1000000 )
262 , BOOST_BINARY( 1000001 )
263 , BOOST_BINARY( 1000010 )
264 , BOOST_BINARY( 1000011 )
265 , BOOST_BINARY( 1000100 )
266 , BOOST_BINARY( 1000101 )
267 , BOOST_BINARY( 1000110 )
268 , BOOST_BINARY( 1000111 )
269 , BOOST_BINARY( 1001000 )
270 , BOOST_BINARY( 1001001 )
271 , BOOST_BINARY( 1001010 )
272 , BOOST_BINARY( 1001011 )
273 , BOOST_BINARY( 1001100 )
274 , BOOST_BINARY( 1001101 )
275 , BOOST_BINARY( 1001110 )
276 , BOOST_BINARY( 1001111 )
277 , BOOST_BINARY( 1010000 )
278 , BOOST_BINARY( 1010001 )
279 , BOOST_BINARY( 1010010 )
280 , BOOST_BINARY( 1010011 )
281 , BOOST_BINARY( 1010100 )
282 , BOOST_BINARY( 1010101 )
283 , BOOST_BINARY( 1010110 )
284 , BOOST_BINARY( 1010111 )
285 , BOOST_BINARY( 1011000 )
286 , BOOST_BINARY( 1011001 )
287 , BOOST_BINARY( 1011010 )
288 , BOOST_BINARY( 1011011 )
289 , BOOST_BINARY( 1011100 )
290 , BOOST_BINARY( 1011101 )
291 , BOOST_BINARY( 1011110 )
292 , BOOST_BINARY( 1011111 )
293 , BOOST_BINARY( 1100000 )
294 , BOOST_BINARY( 1100001 )
295 , BOOST_BINARY( 1100010 )
296 , BOOST_BINARY( 1100011 )
297 , BOOST_BINARY( 1100100 )
298 , BOOST_BINARY( 1100101 )
299 , BOOST_BINARY( 1100110 )
300 , BOOST_BINARY( 1100111 )
301 , BOOST_BINARY( 1101000 )
302 , BOOST_BINARY( 1101001 )
303 , BOOST_BINARY( 1101010 )
304 , BOOST_BINARY( 1101011 )
305 , BOOST_BINARY( 1101100 )
306 , BOOST_BINARY( 1101101 )
307 , BOOST_BINARY( 1101110 )
308 , BOOST_BINARY( 1101111 )
309 , BOOST_BINARY( 1110000 )
310 , BOOST_BINARY( 1110001 )
311 , BOOST_BINARY( 1110010 )
312 , BOOST_BINARY( 1110011 )
313 , BOOST_BINARY( 1110100 )
314 , BOOST_BINARY( 1110101 )
315 , BOOST_BINARY( 1110110 )
316 , BOOST_BINARY( 1110111 )
317 , BOOST_BINARY( 1111000 )
318 , BOOST_BINARY( 1111001 )
319 , BOOST_BINARY( 1111010 )
320 , BOOST_BINARY( 1111011 )
321 , BOOST_BINARY( 1111100 )
322 , BOOST_BINARY( 1111101 )
323 , BOOST_BINARY( 1111110 )
324 , BOOST_BINARY( 1111111 )
325 };
326 unsigned int const unsigned_ints_8_bits[256] =
327 { BOOST_BINARY( 00000000 )
328 , BOOST_BINARY( 00000001 )
329 , BOOST_BINARY( 00000010 )
330 , BOOST_BINARY( 00000011 )
331 , BOOST_BINARY( 00000100 )
332 , BOOST_BINARY( 00000101 )
333 , BOOST_BINARY( 00000110 )
334 , BOOST_BINARY( 00000111 )
335 , BOOST_BINARY( 00001000 )
336 , BOOST_BINARY( 00001001 )
337 , BOOST_BINARY( 00001010 )
338 , BOOST_BINARY( 00001011 )
339 , BOOST_BINARY( 00001100 )
340 , BOOST_BINARY( 00001101 )
341 , BOOST_BINARY( 00001110 )
342 , BOOST_BINARY( 00001111 )
343 , BOOST_BINARY( 00010000 )
344 , BOOST_BINARY( 00010001 )
345 , BOOST_BINARY( 00010010 )
346 , BOOST_BINARY( 00010011 )
347 , BOOST_BINARY( 00010100 )
348 , BOOST_BINARY( 00010101 )
349 , BOOST_BINARY( 00010110 )
350 , BOOST_BINARY( 00010111 )
351 , BOOST_BINARY( 00011000 )
352 , BOOST_BINARY( 00011001 )
353 , BOOST_BINARY( 00011010 )
354 , BOOST_BINARY( 00011011 )
355 , BOOST_BINARY( 00011100 )
356 , BOOST_BINARY( 00011101 )
357 , BOOST_BINARY( 00011110 )
358 , BOOST_BINARY( 00011111 )
359 , BOOST_BINARY( 00100000 )
360 , BOOST_BINARY( 00100001 )
361 , BOOST_BINARY( 00100010 )
362 , BOOST_BINARY( 00100011 )
363 , BOOST_BINARY( 00100100 )
364 , BOOST_BINARY( 00100101 )
365 , BOOST_BINARY( 00100110 )
366 , BOOST_BINARY( 00100111 )
367 , BOOST_BINARY( 00101000 )
368 , BOOST_BINARY( 00101001 )
369 , BOOST_BINARY( 00101010 )
370 , BOOST_BINARY( 00101011 )
371 , BOOST_BINARY( 00101100 )
372 , BOOST_BINARY( 00101101 )
373 , BOOST_BINARY( 00101110 )
374 , BOOST_BINARY( 00101111 )
375 , BOOST_BINARY( 00110000 )
376 , BOOST_BINARY( 00110001 )
377 , BOOST_BINARY( 00110010 )
378 , BOOST_BINARY( 00110011 )
379 , BOOST_BINARY( 00110100 )
380 , BOOST_BINARY( 00110101 )
381 , BOOST_BINARY( 00110110 )
382 , BOOST_BINARY( 00110111 )
383 , BOOST_BINARY( 00111000 )
384 , BOOST_BINARY( 00111001 )
385 , BOOST_BINARY( 00111010 )
386 , BOOST_BINARY( 00111011 )
387 , BOOST_BINARY( 00111100 )
388 , BOOST_BINARY( 00111101 )
389 , BOOST_BINARY( 00111110 )
390 , BOOST_BINARY( 00111111 )
391 , BOOST_BINARY( 01000000 )
392 , BOOST_BINARY( 01000001 )
393 , BOOST_BINARY( 01000010 )
394 , BOOST_BINARY( 01000011 )
395 , BOOST_BINARY( 01000100 )
396 , BOOST_BINARY( 01000101 )
397 , BOOST_BINARY( 01000110 )
398 , BOOST_BINARY( 01000111 )
399 , BOOST_BINARY( 01001000 )
400 , BOOST_BINARY( 01001001 )
401 , BOOST_BINARY( 01001010 )
402 , BOOST_BINARY( 01001011 )
403 , BOOST_BINARY( 01001100 )
404 , BOOST_BINARY( 01001101 )
405 , BOOST_BINARY( 01001110 )
406 , BOOST_BINARY( 01001111 )
407 , BOOST_BINARY( 01010000 )
408 , BOOST_BINARY( 01010001 )
409 , BOOST_BINARY( 01010010 )
410 , BOOST_BINARY( 01010011 )
411 , BOOST_BINARY( 01010100 )
412 , BOOST_BINARY( 01010101 )
413 , BOOST_BINARY( 01010110 )
414 , BOOST_BINARY( 01010111 )
415 , BOOST_BINARY( 01011000 )
416 , BOOST_BINARY( 01011001 )
417 , BOOST_BINARY( 01011010 )
418 , BOOST_BINARY( 01011011 )
419 , BOOST_BINARY( 01011100 )
420 , BOOST_BINARY( 01011101 )
421 , BOOST_BINARY( 01011110 )
422 , BOOST_BINARY( 01011111 )
423 , BOOST_BINARY( 01100000 )
424 , BOOST_BINARY( 01100001 )
425 , BOOST_BINARY( 01100010 )
426 , BOOST_BINARY( 01100011 )
427 , BOOST_BINARY( 01100100 )
428 , BOOST_BINARY( 01100101 )
429 , BOOST_BINARY( 01100110 )
430 , BOOST_BINARY( 01100111 )
431 , BOOST_BINARY( 01101000 )
432 , BOOST_BINARY( 01101001 )
433 , BOOST_BINARY( 01101010 )
434 , BOOST_BINARY( 01101011 )
435 , BOOST_BINARY( 01101100 )
436 , BOOST_BINARY( 01101101 )
437 , BOOST_BINARY( 01101110 )
438 , BOOST_BINARY( 01101111 )
439 , BOOST_BINARY( 01110000 )
440 , BOOST_BINARY( 01110001 )
441 , BOOST_BINARY( 01110010 )
442 , BOOST_BINARY( 01110011 )
443 , BOOST_BINARY( 01110100 )
444 , BOOST_BINARY( 01110101 )
445 , BOOST_BINARY( 01110110 )
446 , BOOST_BINARY( 01110111 )
447 , BOOST_BINARY( 01111000 )
448 , BOOST_BINARY( 01111001 )
449 , BOOST_BINARY( 01111010 )
450 , BOOST_BINARY( 01111011 )
451 , BOOST_BINARY( 01111100 )
452 , BOOST_BINARY( 01111101 )
453 , BOOST_BINARY( 01111110 )
454 , BOOST_BINARY( 01111111 )
455 , BOOST_BINARY( 10000000 )
456 , BOOST_BINARY( 10000001 )
457 , BOOST_BINARY( 10000010 )
458 , BOOST_BINARY( 10000011 )
459 , BOOST_BINARY( 10000100 )
460 , BOOST_BINARY( 10000101 )
461 , BOOST_BINARY( 10000110 )
462 , BOOST_BINARY( 10000111 )
463 , BOOST_BINARY( 10001000 )
464 , BOOST_BINARY( 10001001 )
465 , BOOST_BINARY( 10001010 )
466 , BOOST_BINARY( 10001011 )
467 , BOOST_BINARY( 10001100 )
468 , BOOST_BINARY( 10001101 )
469 , BOOST_BINARY( 10001110 )
470 , BOOST_BINARY( 10001111 )
471 , BOOST_BINARY( 10010000 )
472 , BOOST_BINARY( 10010001 )
473 , BOOST_BINARY( 10010010 )
474 , BOOST_BINARY( 10010011 )
475 , BOOST_BINARY( 10010100 )
476 , BOOST_BINARY( 10010101 )
477 , BOOST_BINARY( 10010110 )
478 , BOOST_BINARY( 10010111 )
479 , BOOST_BINARY( 10011000 )
480 , BOOST_BINARY( 10011001 )
481 , BOOST_BINARY( 10011010 )
482 , BOOST_BINARY( 10011011 )
483 , BOOST_BINARY( 10011100 )
484 , BOOST_BINARY( 10011101 )
485 , BOOST_BINARY( 10011110 )
486 , BOOST_BINARY( 10011111 )
487 , BOOST_BINARY( 10100000 )
488 , BOOST_BINARY( 10100001 )
489 , BOOST_BINARY( 10100010 )
490 , BOOST_BINARY( 10100011 )
491 , BOOST_BINARY( 10100100 )
492 , BOOST_BINARY( 10100101 )
493 , BOOST_BINARY( 10100110 )
494 , BOOST_BINARY( 10100111 )
495 , BOOST_BINARY( 10101000 )
496 , BOOST_BINARY( 10101001 )
497 , BOOST_BINARY( 10101010 )
498 , BOOST_BINARY( 10101011 )
499 , BOOST_BINARY( 10101100 )
500 , BOOST_BINARY( 10101101 )
501 , BOOST_BINARY( 10101110 )
502 , BOOST_BINARY( 10101111 )
503 , BOOST_BINARY( 10110000 )
504 , BOOST_BINARY( 10110001 )
505 , BOOST_BINARY( 10110010 )
506 , BOOST_BINARY( 10110011 )
507 , BOOST_BINARY( 10110100 )
508 , BOOST_BINARY( 10110101 )
509 , BOOST_BINARY( 10110110 )
510 , BOOST_BINARY( 10110111 )
511 , BOOST_BINARY( 10111000 )
512 , BOOST_BINARY( 10111001 )
513 , BOOST_BINARY( 10111010 )
514 , BOOST_BINARY( 10111011 )
515 , BOOST_BINARY( 10111100 )
516 , BOOST_BINARY( 10111101 )
517 , BOOST_BINARY( 10111110 )
518 , BOOST_BINARY( 10111111 )
519 , BOOST_BINARY( 11000000 )
520 , BOOST_BINARY( 11000001 )
521 , BOOST_BINARY( 11000010 )
522 , BOOST_BINARY( 11000011 )
523 , BOOST_BINARY( 11000100 )
524 , BOOST_BINARY( 11000101 )
525 , BOOST_BINARY( 11000110 )
526 , BOOST_BINARY( 11000111 )
527 , BOOST_BINARY( 11001000 )
528 , BOOST_BINARY( 11001001 )
529 , BOOST_BINARY( 11001010 )
530 , BOOST_BINARY( 11001011 )
531 , BOOST_BINARY( 11001100 )
532 , BOOST_BINARY( 11001101 )
533 , BOOST_BINARY( 11001110 )
534 , BOOST_BINARY( 11001111 )
535 , BOOST_BINARY( 11010000 )
536 , BOOST_BINARY( 11010001 )
537 , BOOST_BINARY( 11010010 )
538 , BOOST_BINARY( 11010011 )
539 , BOOST_BINARY( 11010100 )
540 , BOOST_BINARY( 11010101 )
541 , BOOST_BINARY( 11010110 )
542 , BOOST_BINARY( 11010111 )
543 , BOOST_BINARY( 11011000 )
544 , BOOST_BINARY( 11011001 )
545 , BOOST_BINARY( 11011010 )
546 , BOOST_BINARY( 11011011 )
547 , BOOST_BINARY( 11011100 )
548 , BOOST_BINARY( 11011101 )
549 , BOOST_BINARY( 11011110 )
550 , BOOST_BINARY( 11011111 )
551 , BOOST_BINARY( 11100000 )
552 , BOOST_BINARY( 11100001 )
553 , BOOST_BINARY( 11100010 )
554 , BOOST_BINARY( 11100011 )
555 , BOOST_BINARY( 11100100 )
556 , BOOST_BINARY( 11100101 )
557 , BOOST_BINARY( 11100110 )
558 , BOOST_BINARY( 11100111 )
559 , BOOST_BINARY( 11101000 )
560 , BOOST_BINARY( 11101001 )
561 , BOOST_BINARY( 11101010 )
562 , BOOST_BINARY( 11101011 )
563 , BOOST_BINARY( 11101100 )
564 , BOOST_BINARY( 11101101 )
565 , BOOST_BINARY( 11101110 )
566 , BOOST_BINARY( 11101111 )
567 , BOOST_BINARY( 11110000 )
568 , BOOST_BINARY( 11110001 )
569 , BOOST_BINARY( 11110010 )
570 , BOOST_BINARY( 11110011 )
571 , BOOST_BINARY( 11110100 )
572 , BOOST_BINARY( 11110101 )
573 , BOOST_BINARY( 11110110 )
574 , BOOST_BINARY( 11110111 )
575 , BOOST_BINARY( 11111000 )
576 , BOOST_BINARY( 11111001 )
577 , BOOST_BINARY( 11111010 )
578 , BOOST_BINARY( 11111011 )
579 , BOOST_BINARY( 11111100 )
580 , BOOST_BINARY( 11111101 )
581 , BOOST_BINARY( 11111110 )
582 , BOOST_BINARY( 11111111 )
583 };
584
585 struct left_is_not_one_less_than_right
586 {
587 bool operator ()( unsigned int left, unsigned int right ) const
588 {
589 return right != left + 1;
590 }
591 };
592
593 template< std::size_t Size >
594 bool is_ascending_from_0_array( unsigned int const (&array)[Size] )
595 {
596 unsigned int const* const curr = array,
597 * const end = array + Size;
598
599 return ( *curr == 0 )
600 && ( std::adjacent_find( curr, end
601 , left_is_not_one_less_than_right()
602 )
603 == end
604 );
605 }
606
607 std::size_t const unsigned_int_id = 1,
608 unsigned_long_int_id = 2;
609
610 typedef char (&unsigned_int_id_type)[unsigned_int_id];
611 typedef char (&unsigned_long_int_id_type)[unsigned_long_int_id];
612
613 // Note: Functions only used for type checking
614 unsigned_int_id_type binary_type_checker( unsigned int );
615 unsigned_long_int_id_type binary_type_checker( unsigned long int );
616
617 int test_main( int, char *[] )
618 {
619 BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_1_bit ) );
620 BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_2_bits ) );
621 BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_3_bits ) );
622 BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_4_bits ) );
623 BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_5_bits ) );
624 BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_6_bits ) );
625 BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_7_bits ) );
626 BOOST_CHECK( is_ascending_from_0_array( unsigned_ints_8_bits ) );
627
628 BOOST_CHECK( std::equal( &random_unsigned_ints_hex[0]
629 , random_unsigned_ints_hex + num_random_test_values
630 , &random_unsigned_ints_binary[0]
631 )
632 );
633
634 BOOST_CHECK( sizeof( binary_type_checker( BOOST_BINARY_U( 110100 1010 ) ) )
635 == unsigned_int_id
636 );
637
638 BOOST_CHECK( sizeof( binary_type_checker( BOOST_BINARY_UL( 11110 ) ) )
639 == unsigned_long_int_id
640 );
641
642 BOOST_CHECK( sizeof( binary_type_checker( BOOST_BINARY_LU( 10 0001 ) ) )
643 == unsigned_long_int_id
644 );
645
646 return 0;
647 }