]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/karma/uint_radix.cpp
1 // Copyright (c) 2001-2011 Hartmut Kaiser
2 // Copyright (c) 2011 Jan Frederick Eick
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 #include <boost/config/warning_disable.hpp>
8 #include <boost/detail/lightweight_test.hpp>
9 #include <boost/spirit/include/karma_numeric.hpp>
11 #include <boost/cstdint.hpp>
15 ///////////////////////////////////////////////////////////////////////////////
17 // *** BEWARE PLATFORM DEPENDENT!!! ***
18 // *** The following assumes 32 bit boost::uint32_tegers.
19 // *** Modify these constants when appropriate.
21 ///////////////////////////////////////////////////////////////////////////////
23 char const* max_unsigned_base2
= "11111111111111111111111111111111";
24 char const* max_unsigned_base3
= "102002022201221111210";
25 char const* max_unsigned_base4
= "3333333333333333";
26 char const* max_unsigned_base5
= "32244002423140";
27 char const* max_unsigned_base6
= "1550104015503";
28 char const* max_unsigned_base7
= "211301422353";
29 char const* max_unsigned_base8
= "37777777777";
30 char const* max_unsigned_base9
= "12068657453";
31 char const* max_unsigned_base11
= "1904440553";
32 char const* max_unsigned_base12
= "9ba461593";
33 char const* max_unsigned_base13
= "535a79888";
34 char const* max_unsigned_base14
= "2ca5b7463";
35 char const* max_unsigned_base15
= "1a20dcd80";
36 char const* max_unsigned_base16
= "ffffffff";
37 char const* max_unsigned_base17
= "a7ffda90";
38 char const* max_unsigned_base18
= "704he7g3";
39 char const* max_unsigned_base19
= "4f5aff65";
40 char const* max_unsigned_base20
= "3723ai4f";
41 char const* max_unsigned_base21
= "281d55i3";
42 char const* max_unsigned_base22
= "1fj8b183";
43 char const* max_unsigned_base23
= "1606k7ib";
44 char const* max_unsigned_base24
= "mb994af";
45 char const* max_unsigned_base25
= "hek2mgk";
46 char const* max_unsigned_base26
= "dnchbnl";
47 char const* max_unsigned_base27
= "b28jpdl";
48 char const* max_unsigned_base28
= "8pfgih3";
49 char const* max_unsigned_base29
= "76beigf";
50 char const* max_unsigned_base30
= "5qmcpqf";
51 char const* max_unsigned_base31
= "4q0jto3";
52 char const* max_unsigned_base32
= "3vvvvvv";
53 char const* max_unsigned_base33
= "3aokq93";
54 char const* max_unsigned_base34
= "2qhxjlh";
55 char const* max_unsigned_base35
= "2br45qa";
56 char const* max_unsigned_base36
= "1z141z3";
61 using spirit_test::test
;
62 using boost::spirit::karma::uint_generator
;
64 ///////////////////////////////////////////////////////////////////////////
65 // arbitrary radix test (base 2)
66 ///////////////////////////////////////////////////////////////////////////
68 uint_generator
<boost::uint32_t, 2> base2_generator
;
70 BOOST_TEST(test("1100111100100110010", base2_generator(424242)));
71 BOOST_TEST(test("1100111100100110010", base2_generator
, 424242));
73 BOOST_TEST(test(max_unsigned_base2
, base2_generator(0xffffffffu
)));
74 BOOST_TEST(test(max_unsigned_base2
, base2_generator
, 0xffffffffu
));
77 ///////////////////////////////////////////////////////////////////////////
78 // arbitrary radix test (base 3)
79 ///////////////////////////////////////////////////////////////////////////
81 uint_generator
<boost::uint32_t, 3> base3_generator
;
83 BOOST_TEST(test("210112221200", base3_generator(424242)));
84 BOOST_TEST(test("210112221200", base3_generator
, 424242));
86 BOOST_TEST(test(max_unsigned_base3
, base3_generator(0xffffffffu
)));
87 BOOST_TEST(test(max_unsigned_base3
, base3_generator
, 0xffffffffu
));
90 ///////////////////////////////////////////////////////////////////////////
91 // arbitrary radix test (base 4)
92 ///////////////////////////////////////////////////////////////////////////
94 uint_generator
<boost::uint32_t, 4> base4_generator
;
96 BOOST_TEST(test("1213210302", base4_generator(424242)));
97 BOOST_TEST(test("1213210302", base4_generator
, 424242));
99 BOOST_TEST(test(max_unsigned_base4
, base4_generator(0xffffffffu
)));
100 BOOST_TEST(test(max_unsigned_base4
, base4_generator
, 0xffffffffu
));
103 ///////////////////////////////////////////////////////////////////////////
104 // arbitrary radix test (base 5)
105 ///////////////////////////////////////////////////////////////////////////
107 uint_generator
<boost::uint32_t, 5> base5_generator
;
109 BOOST_TEST(test("102033432", base5_generator(424242)));
110 BOOST_TEST(test("102033432", base5_generator
, 424242));
112 BOOST_TEST(test(max_unsigned_base5
, base5_generator(0xffffffffu
)));
113 BOOST_TEST(test(max_unsigned_base5
, base5_generator
, 0xffffffffu
));
116 ///////////////////////////////////////////////////////////////////////////
117 // arbitrary radix test (base 6)
118 ///////////////////////////////////////////////////////////////////////////
120 uint_generator
<boost::uint32_t, 6> base6_generator
;
122 BOOST_TEST(test("13032030", base6_generator(424242)));
123 BOOST_TEST(test("13032030", base6_generator
, 424242));
125 BOOST_TEST(test(max_unsigned_base6
, base6_generator(0xffffffffu
)));
126 BOOST_TEST(test(max_unsigned_base6
, base6_generator
, 0xffffffffu
));
129 ///////////////////////////////////////////////////////////////////////////
130 // arbitrary radix test (base 7)
131 ///////////////////////////////////////////////////////////////////////////
133 uint_generator
<boost::uint32_t, 7> base7_generator
;
135 BOOST_TEST(test("3414600", base7_generator(424242)));
136 BOOST_TEST(test("3414600", base7_generator
, 424242));
138 BOOST_TEST(test(max_unsigned_base7
, base7_generator(0xffffffffu
)));
139 BOOST_TEST(test(max_unsigned_base7
, base7_generator
, 0xffffffffu
));
142 ///////////////////////////////////////////////////////////////////////////
143 // arbitrary radix test (base 8)
144 ///////////////////////////////////////////////////////////////////////////
146 uint_generator
<boost::uint32_t, 8> base8_generator
;
148 BOOST_TEST(test("1474462", base8_generator(424242)));
149 BOOST_TEST(test("1474462", base8_generator
, 424242));
151 BOOST_TEST(test(max_unsigned_base8
, base8_generator(0xffffffffu
)));
152 BOOST_TEST(test(max_unsigned_base8
, base8_generator
, 0xffffffffu
));
155 ///////////////////////////////////////////////////////////////////////////
156 // arbitrary radix test (base 9)
157 ///////////////////////////////////////////////////////////////////////////
159 uint_generator
<boost::uint32_t, 9> base9_generator
;
161 BOOST_TEST(test("715850", base9_generator(424242)));
162 BOOST_TEST(test("715850", base9_generator
, 424242));
164 BOOST_TEST(test(max_unsigned_base9
, base9_generator(0xffffffffu
)));
165 BOOST_TEST(test(max_unsigned_base9
, base9_generator
, 0xffffffffu
));
168 ///////////////////////////////////////////////////////////////////////////
169 // arbitrary radix test (base 11)
170 ///////////////////////////////////////////////////////////////////////////
172 uint_generator
<boost::uint32_t, 11> base11_generator
;
174 BOOST_TEST(test("26a815", base11_generator(424242)));
175 BOOST_TEST(test("26a815", base11_generator
, 424242));
177 BOOST_TEST(test(max_unsigned_base11
, base11_generator(0xffffffffu
)));
178 BOOST_TEST(test(max_unsigned_base11
, base11_generator
, 0xffffffffu
));
181 ///////////////////////////////////////////////////////////////////////////
182 // arbitrary radix test (base 12)
183 ///////////////////////////////////////////////////////////////////////////
185 uint_generator
<boost::uint32_t, 12> base12_generator
;
187 BOOST_TEST(test("185616", base12_generator(424242)));
188 BOOST_TEST(test("185616", base12_generator
, 424242));
190 BOOST_TEST(test(max_unsigned_base12
, base12_generator(0xffffffffu
)));
191 BOOST_TEST(test(max_unsigned_base12
, base12_generator
, 0xffffffffu
));
194 ///////////////////////////////////////////////////////////////////////////
195 // arbitrary radix test (base 13)
196 ///////////////////////////////////////////////////////////////////////////
198 uint_generator
<boost::uint32_t, 13> base13_generator
;
200 BOOST_TEST(test("11b140", base13_generator(424242)));
201 BOOST_TEST(test("11b140", base13_generator
, 424242));
203 BOOST_TEST(test(max_unsigned_base13
, base13_generator(0xffffffffu
)));
204 BOOST_TEST(test(max_unsigned_base13
, base13_generator
, 0xffffffffu
));
207 ///////////////////////////////////////////////////////////////////////////
208 // arbitrary radix test (base 14)
209 ///////////////////////////////////////////////////////////////////////////
211 uint_generator
<boost::uint32_t, 14> base14_generator
;
213 BOOST_TEST(test("b0870", base14_generator(424242)));
214 BOOST_TEST(test("b0870", base14_generator
, 424242));
216 BOOST_TEST(test(max_unsigned_base14
, base14_generator(0xffffffffu
)));
217 BOOST_TEST(test(max_unsigned_base14
, base14_generator
, 0xffffffffu
));
220 ///////////////////////////////////////////////////////////////////////////
221 // arbitrary radix test (base 15)
222 ///////////////////////////////////////////////////////////////////////////
224 uint_generator
<boost::uint32_t, 15> base15_generator
;
226 BOOST_TEST(test("85a7c", base15_generator(424242)));
227 BOOST_TEST(test("85a7c", base15_generator
, 424242));
229 BOOST_TEST(test(max_unsigned_base15
, base15_generator(0xffffffffu
)));
230 BOOST_TEST(test(max_unsigned_base15
, base15_generator
, 0xffffffffu
));
233 ///////////////////////////////////////////////////////////////////////////
234 // arbitrary radix test (base 16)
235 ///////////////////////////////////////////////////////////////////////////
237 uint_generator
<boost::uint32_t, 16> base16_generator
;
239 BOOST_TEST(test("67932", base16_generator(424242)));
240 BOOST_TEST(test("67932", base16_generator
, 424242));
242 BOOST_TEST(test(max_unsigned_base16
, base16_generator(0xffffffffu
)));
243 BOOST_TEST(test(max_unsigned_base16
, base16_generator
, 0xffffffffu
));
246 ///////////////////////////////////////////////////////////////////////////
247 // arbitrary radix test (base 17)
248 ///////////////////////////////////////////////////////////////////////////
250 uint_generator
<boost::uint32_t, 17> base17_generator
;
252 BOOST_TEST(test("515g7", base17_generator(424242)));
253 BOOST_TEST(test("515g7", base17_generator
, 424242));
255 BOOST_TEST(test(max_unsigned_base17
, base17_generator(0xffffffffu
)));
256 BOOST_TEST(test(max_unsigned_base17
, base17_generator
, 0xffffffffu
));
259 ///////////////////////////////////////////////////////////////////////////
260 // arbitrary radix test (base 18)
261 ///////////////////////////////////////////////////////////////////////////
263 uint_generator
<boost::uint32_t, 18> base18_generator
;
265 BOOST_TEST(test("40d70", base18_generator(424242)));
266 BOOST_TEST(test("40d70", base18_generator
, 424242));
268 BOOST_TEST(test(max_unsigned_base18
, base18_generator(0xffffffffu
)));
269 BOOST_TEST(test(max_unsigned_base18
, base18_generator
, 0xffffffffu
));
272 ///////////////////////////////////////////////////////////////////////////
273 // arbitrary radix test (base 19)
274 ///////////////////////////////////////////////////////////////////////////
276 uint_generator
<boost::uint32_t, 19> base19_generator
;
278 BOOST_TEST(test("34g3a", base19_generator(424242)));
279 BOOST_TEST(test("34g3a", base19_generator
, 424242));
281 BOOST_TEST(test(max_unsigned_base19
, base19_generator(0xffffffffu
)));
282 BOOST_TEST(test(max_unsigned_base19
, base19_generator
, 0xffffffffu
));
285 ///////////////////////////////////////////////////////////////////////////
286 // arbitrary radix test (base 20)
287 ///////////////////////////////////////////////////////////////////////////
289 uint_generator
<boost::uint32_t, 20> base20_generator
;
291 BOOST_TEST(test("2d0c2", base20_generator(424242)));
292 BOOST_TEST(test("2d0c2", base20_generator
, 424242));
294 BOOST_TEST(test(max_unsigned_base20
, base20_generator(0xffffffffu
)));
295 BOOST_TEST(test(max_unsigned_base20
, base20_generator
, 0xffffffffu
));
298 ///////////////////////////////////////////////////////////////////////////
299 // arbitrary radix test (base 21)
300 ///////////////////////////////////////////////////////////////////////////
302 uint_generator
<boost::uint32_t, 21> base21_generator
;
304 BOOST_TEST(test("23h00", base21_generator(424242)));
305 BOOST_TEST(test("23h00", base21_generator
, 424242));
307 BOOST_TEST(test(max_unsigned_base21
, base21_generator(0xffffffffu
)));
308 BOOST_TEST(test(max_unsigned_base21
, base21_generator
, 0xffffffffu
));
311 ///////////////////////////////////////////////////////////////////////////
312 // arbitrary radix test (base 22)
313 ///////////////////////////////////////////////////////////////////////////
315 uint_generator
<boost::uint32_t, 22> base22_generator
;
317 BOOST_TEST(test("1hibg", base22_generator(424242)));
318 BOOST_TEST(test("1hibg", base22_generator
, 424242));
320 BOOST_TEST(test(max_unsigned_base22
, base22_generator(0xffffffffu
)));
321 BOOST_TEST(test(max_unsigned_base22
, base22_generator
, 0xffffffffu
));
324 ///////////////////////////////////////////////////////////////////////////
325 // arbitrary radix test (base 23)
326 ///////////////////////////////////////////////////////////////////////////
328 uint_generator
<boost::uint32_t, 23> base23_generator
;
330 BOOST_TEST(test("1bjm7", base23_generator(424242)));
331 BOOST_TEST(test("1bjm7", base23_generator
, 424242));
333 BOOST_TEST(test(max_unsigned_base23
, base23_generator(0xffffffffu
)));
334 BOOST_TEST(test(max_unsigned_base23
, base23_generator
, 0xffffffffu
));
337 ///////////////////////////////////////////////////////////////////////////
338 // arbitrary radix test (base 24)
339 ///////////////////////////////////////////////////////////////////////////
341 uint_generator
<boost::uint32_t, 24> base24_generator
;
343 BOOST_TEST(test("16gci", base24_generator(424242)));
344 BOOST_TEST(test("16gci", base24_generator
, 424242));
346 BOOST_TEST(test(max_unsigned_base24
, base24_generator(0xffffffffu
)));
347 BOOST_TEST(test(max_unsigned_base24
, base24_generator
, 0xffffffffu
));
350 ///////////////////////////////////////////////////////////////////////////
351 // arbitrary radix test (base 25)
352 ///////////////////////////////////////////////////////////////////////////
354 uint_generator
<boost::uint32_t, 25> base25_generator
;
356 BOOST_TEST(test("123jh", base25_generator(424242)));
357 BOOST_TEST(test("123jh", base25_generator
, 424242));
359 BOOST_TEST(test(max_unsigned_base25
, base25_generator(0xffffffffu
)));
360 BOOST_TEST(test(max_unsigned_base25
, base25_generator
, 0xffffffffu
));
363 ///////////////////////////////////////////////////////////////////////////
364 // arbitrary radix test (base 26)
365 ///////////////////////////////////////////////////////////////////////////
367 uint_generator
<boost::uint32_t, 26> base26_generator
;
369 BOOST_TEST(test("o3f0", base26_generator(424242)));
370 BOOST_TEST(test("o3f0", base26_generator
, 424242));
372 BOOST_TEST(test(max_unsigned_base26
, base26_generator(0xffffffffu
)));
373 BOOST_TEST(test(max_unsigned_base26
, base26_generator
, 0xffffffffu
));
376 ///////////////////////////////////////////////////////////////////////////
377 // arbitrary radix test (base 27)
378 ///////////////////////////////////////////////////////////////////////////
380 uint_generator
<boost::uint32_t, 27> base27_generator
;
382 BOOST_TEST(test("lepi", base27_generator(424242)));
383 BOOST_TEST(test("lepi", base27_generator
, 424242));
385 BOOST_TEST(test(max_unsigned_base27
, base27_generator(0xffffffffu
)));
386 BOOST_TEST(test(max_unsigned_base27
, base27_generator
, 0xffffffffu
));
389 ///////////////////////////////////////////////////////////////////////////
390 // arbitrary radix test (base 28)
391 ///////////////////////////////////////////////////////////////////////////
393 uint_generator
<boost::uint32_t, 28> base28_generator
;
395 BOOST_TEST(test("j93e", base28_generator(424242)));
396 BOOST_TEST(test("j93e", base28_generator
, 424242));
398 BOOST_TEST(test(max_unsigned_base28
, base28_generator(0xffffffffu
)));
399 BOOST_TEST(test(max_unsigned_base28
, base28_generator
, 0xffffffffu
));
402 ///////////////////////////////////////////////////////////////////////////
403 // arbitrary radix test (base 29)
404 ///////////////////////////////////////////////////////////////////////////
406 uint_generator
<boost::uint32_t, 29> base29_generator
;
408 BOOST_TEST(test("hbd1", base29_generator(424242)));
409 BOOST_TEST(test("hbd1", base29_generator
, 424242));
411 BOOST_TEST(test(max_unsigned_base29
, base29_generator(0xffffffffu
)));
412 BOOST_TEST(test(max_unsigned_base29
, base29_generator
, 0xffffffffu
));
415 ///////////////////////////////////////////////////////////////////////////
416 // arbitrary radix test (base 30)
417 ///////////////////////////////////////////////////////////////////////////
419 uint_generator
<boost::uint32_t, 30> base30_generator
;
421 BOOST_TEST(test("flbc", base30_generator(424242)));
422 BOOST_TEST(test("flbc", base30_generator
, 424242));
424 BOOST_TEST(test(max_unsigned_base30
, base30_generator(0xffffffffu
)));
425 BOOST_TEST(test(max_unsigned_base30
, base30_generator
, 0xffffffffu
));
428 ///////////////////////////////////////////////////////////////////////////
429 // arbitrary radix test (base 31)
430 ///////////////////////////////////////////////////////////////////////////
432 uint_generator
<boost::uint32_t, 31> base31_generator
;
434 BOOST_TEST(test("e7e7", base31_generator(424242)));
435 BOOST_TEST(test("e7e7", base31_generator
, 424242));
437 BOOST_TEST(test(max_unsigned_base31
, base31_generator(0xffffffffu
)));
438 BOOST_TEST(test(max_unsigned_base31
, base31_generator
, 0xffffffffu
));
441 ///////////////////////////////////////////////////////////////////////////
442 // arbitrary radix test (base 32)
443 ///////////////////////////////////////////////////////////////////////////
445 uint_generator
<boost::uint32_t, 32> base32_generator
;
447 BOOST_TEST(test("cu9i", base32_generator(424242)));
448 BOOST_TEST(test("cu9i", base32_generator
, 424242));
450 BOOST_TEST(test(max_unsigned_base32
, base32_generator(0xffffffffu
)));
451 BOOST_TEST(test(max_unsigned_base32
, base32_generator
, 0xffffffffu
));
454 ///////////////////////////////////////////////////////////////////////////
455 // arbitrary radix test (base 33)
456 ///////////////////////////////////////////////////////////////////////////
458 uint_generator
<boost::uint32_t, 33> base33_generator
;
460 BOOST_TEST(test("bqir", base33_generator(424242)));
461 BOOST_TEST(test("bqir", base33_generator
, 424242));
463 BOOST_TEST(test(max_unsigned_base33
, base33_generator(0xffffffffu
)));
464 BOOST_TEST(test(max_unsigned_base33
, base33_generator
, 0xffffffffu
));
467 ///////////////////////////////////////////////////////////////////////////
468 // arbitrary radix test (base 34)
469 ///////////////////////////////////////////////////////////////////////////
471 uint_generator
<boost::uint32_t, 34> base34_generator
;
473 BOOST_TEST(test("aqxo", base34_generator(424242)));
474 BOOST_TEST(test("aqxo", base34_generator
, 424242));
476 BOOST_TEST(test(max_unsigned_base34
, base34_generator(0xffffffffu
)));
477 BOOST_TEST(test(max_unsigned_base34
, base34_generator
, 0xffffffffu
));
480 ///////////////////////////////////////////////////////////////////////////
481 // arbitrary radix test (base 35)
482 ///////////////////////////////////////////////////////////////////////////
484 uint_generator
<boost::uint32_t, 35> base35_generator
;
486 BOOST_TEST(test("9vb7", base35_generator(424242)));
487 BOOST_TEST(test("9vb7", base35_generator
, 424242));
489 BOOST_TEST(test(max_unsigned_base35
, base35_generator(0xffffffffu
)));
490 BOOST_TEST(test(max_unsigned_base35
, base35_generator
, 0xffffffffu
));
493 ///////////////////////////////////////////////////////////////////////////
494 // arbitrary radix test (base 36)
495 ///////////////////////////////////////////////////////////////////////////
497 uint_generator
<boost::uint32_t, 36> base36_generator
;
499 BOOST_TEST(test("93ci", base36_generator(424242)));
500 BOOST_TEST(test("93ci", base36_generator
, 424242));
502 BOOST_TEST(test(max_unsigned_base36
, base36_generator(0xffffffffu
)));
503 BOOST_TEST(test(max_unsigned_base36
, base36_generator
, 0xffffffffu
));
506 return boost::report_errors();