]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/karma/uint_radix.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / spirit / test / karma / uint_radix.cpp
1 // Copyright (c) 2001-2011 Hartmut Kaiser
2 // Copyright (c) 2011 Jan Frederick Eick
3 //
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)
6
7 #include <boost/config/warning_disable.hpp>
8 #include <boost/detail/lightweight_test.hpp>
9 #include <boost/spirit/include/karma_numeric.hpp>
10
11 #include <boost/cstdint.hpp>
12
13 #include "test.hpp"
14
15 ///////////////////////////////////////////////////////////////////////////////
16 //
17 // *** BEWARE PLATFORM DEPENDENT!!! ***
18 // *** The following assumes 32 bit boost::uint32_tegers.
19 // *** Modify these constants when appropriate.
20 //
21 ///////////////////////////////////////////////////////////////////////////////
22
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";
57
58 int
59 main()
60 {
61 using spirit_test::test;
62 using boost::spirit::karma::uint_generator;
63
64 ///////////////////////////////////////////////////////////////////////////
65 // arbitrary radix test (base 2)
66 ///////////////////////////////////////////////////////////////////////////
67 {
68 uint_generator<boost::uint32_t, 2> base2_generator;
69
70 BOOST_TEST(test("1100111100100110010", base2_generator(424242)));
71 BOOST_TEST(test("1100111100100110010", base2_generator, 424242));
72
73 BOOST_TEST(test(max_unsigned_base2, base2_generator(0xffffffffu)));
74 BOOST_TEST(test(max_unsigned_base2, base2_generator, 0xffffffffu));
75 }
76
77 ///////////////////////////////////////////////////////////////////////////
78 // arbitrary radix test (base 3)
79 ///////////////////////////////////////////////////////////////////////////
80 {
81 uint_generator<boost::uint32_t, 3> base3_generator;
82
83 BOOST_TEST(test("210112221200", base3_generator(424242)));
84 BOOST_TEST(test("210112221200", base3_generator, 424242));
85
86 BOOST_TEST(test(max_unsigned_base3, base3_generator(0xffffffffu)));
87 BOOST_TEST(test(max_unsigned_base3, base3_generator, 0xffffffffu));
88 }
89
90 ///////////////////////////////////////////////////////////////////////////
91 // arbitrary radix test (base 4)
92 ///////////////////////////////////////////////////////////////////////////
93 {
94 uint_generator<boost::uint32_t, 4> base4_generator;
95
96 BOOST_TEST(test("1213210302", base4_generator(424242)));
97 BOOST_TEST(test("1213210302", base4_generator, 424242));
98
99 BOOST_TEST(test(max_unsigned_base4, base4_generator(0xffffffffu)));
100 BOOST_TEST(test(max_unsigned_base4, base4_generator, 0xffffffffu));
101 }
102
103 ///////////////////////////////////////////////////////////////////////////
104 // arbitrary radix test (base 5)
105 ///////////////////////////////////////////////////////////////////////////
106 {
107 uint_generator<boost::uint32_t, 5> base5_generator;
108
109 BOOST_TEST(test("102033432", base5_generator(424242)));
110 BOOST_TEST(test("102033432", base5_generator, 424242));
111
112 BOOST_TEST(test(max_unsigned_base5, base5_generator(0xffffffffu)));
113 BOOST_TEST(test(max_unsigned_base5, base5_generator, 0xffffffffu));
114 }
115
116 ///////////////////////////////////////////////////////////////////////////
117 // arbitrary radix test (base 6)
118 ///////////////////////////////////////////////////////////////////////////
119 {
120 uint_generator<boost::uint32_t, 6> base6_generator;
121
122 BOOST_TEST(test("13032030", base6_generator(424242)));
123 BOOST_TEST(test("13032030", base6_generator, 424242));
124
125 BOOST_TEST(test(max_unsigned_base6, base6_generator(0xffffffffu)));
126 BOOST_TEST(test(max_unsigned_base6, base6_generator, 0xffffffffu));
127 }
128
129 ///////////////////////////////////////////////////////////////////////////
130 // arbitrary radix test (base 7)
131 ///////////////////////////////////////////////////////////////////////////
132 {
133 uint_generator<boost::uint32_t, 7> base7_generator;
134
135 BOOST_TEST(test("3414600", base7_generator(424242)));
136 BOOST_TEST(test("3414600", base7_generator, 424242));
137
138 BOOST_TEST(test(max_unsigned_base7, base7_generator(0xffffffffu)));
139 BOOST_TEST(test(max_unsigned_base7, base7_generator, 0xffffffffu));
140 }
141
142 ///////////////////////////////////////////////////////////////////////////
143 // arbitrary radix test (base 8)
144 ///////////////////////////////////////////////////////////////////////////
145 {
146 uint_generator<boost::uint32_t, 8> base8_generator;
147
148 BOOST_TEST(test("1474462", base8_generator(424242)));
149 BOOST_TEST(test("1474462", base8_generator, 424242));
150
151 BOOST_TEST(test(max_unsigned_base8, base8_generator(0xffffffffu)));
152 BOOST_TEST(test(max_unsigned_base8, base8_generator, 0xffffffffu));
153 }
154
155 ///////////////////////////////////////////////////////////////////////////
156 // arbitrary radix test (base 9)
157 ///////////////////////////////////////////////////////////////////////////
158 {
159 uint_generator<boost::uint32_t, 9> base9_generator;
160
161 BOOST_TEST(test("715850", base9_generator(424242)));
162 BOOST_TEST(test("715850", base9_generator, 424242));
163
164 BOOST_TEST(test(max_unsigned_base9, base9_generator(0xffffffffu)));
165 BOOST_TEST(test(max_unsigned_base9, base9_generator, 0xffffffffu));
166 }
167
168 ///////////////////////////////////////////////////////////////////////////
169 // arbitrary radix test (base 11)
170 ///////////////////////////////////////////////////////////////////////////
171 {
172 uint_generator<boost::uint32_t, 11> base11_generator;
173
174 BOOST_TEST(test("26a815", base11_generator(424242)));
175 BOOST_TEST(test("26a815", base11_generator, 424242));
176
177 BOOST_TEST(test(max_unsigned_base11, base11_generator(0xffffffffu)));
178 BOOST_TEST(test(max_unsigned_base11, base11_generator, 0xffffffffu));
179 }
180
181 ///////////////////////////////////////////////////////////////////////////
182 // arbitrary radix test (base 12)
183 ///////////////////////////////////////////////////////////////////////////
184 {
185 uint_generator<boost::uint32_t, 12> base12_generator;
186
187 BOOST_TEST(test("185616", base12_generator(424242)));
188 BOOST_TEST(test("185616", base12_generator, 424242));
189
190 BOOST_TEST(test(max_unsigned_base12, base12_generator(0xffffffffu)));
191 BOOST_TEST(test(max_unsigned_base12, base12_generator, 0xffffffffu));
192 }
193
194 ///////////////////////////////////////////////////////////////////////////
195 // arbitrary radix test (base 13)
196 ///////////////////////////////////////////////////////////////////////////
197 {
198 uint_generator<boost::uint32_t, 13> base13_generator;
199
200 BOOST_TEST(test("11b140", base13_generator(424242)));
201 BOOST_TEST(test("11b140", base13_generator, 424242));
202
203 BOOST_TEST(test(max_unsigned_base13, base13_generator(0xffffffffu)));
204 BOOST_TEST(test(max_unsigned_base13, base13_generator, 0xffffffffu));
205 }
206
207 ///////////////////////////////////////////////////////////////////////////
208 // arbitrary radix test (base 14)
209 ///////////////////////////////////////////////////////////////////////////
210 {
211 uint_generator<boost::uint32_t, 14> base14_generator;
212
213 BOOST_TEST(test("b0870", base14_generator(424242)));
214 BOOST_TEST(test("b0870", base14_generator, 424242));
215
216 BOOST_TEST(test(max_unsigned_base14, base14_generator(0xffffffffu)));
217 BOOST_TEST(test(max_unsigned_base14, base14_generator, 0xffffffffu));
218 }
219
220 ///////////////////////////////////////////////////////////////////////////
221 // arbitrary radix test (base 15)
222 ///////////////////////////////////////////////////////////////////////////
223 {
224 uint_generator<boost::uint32_t, 15> base15_generator;
225
226 BOOST_TEST(test("85a7c", base15_generator(424242)));
227 BOOST_TEST(test("85a7c", base15_generator, 424242));
228
229 BOOST_TEST(test(max_unsigned_base15, base15_generator(0xffffffffu)));
230 BOOST_TEST(test(max_unsigned_base15, base15_generator, 0xffffffffu));
231 }
232
233 ///////////////////////////////////////////////////////////////////////////
234 // arbitrary radix test (base 16)
235 ///////////////////////////////////////////////////////////////////////////
236 {
237 uint_generator<boost::uint32_t, 16> base16_generator;
238
239 BOOST_TEST(test("67932", base16_generator(424242)));
240 BOOST_TEST(test("67932", base16_generator, 424242));
241
242 BOOST_TEST(test(max_unsigned_base16, base16_generator(0xffffffffu)));
243 BOOST_TEST(test(max_unsigned_base16, base16_generator, 0xffffffffu));
244 }
245
246 ///////////////////////////////////////////////////////////////////////////
247 // arbitrary radix test (base 17)
248 ///////////////////////////////////////////////////////////////////////////
249 {
250 uint_generator<boost::uint32_t, 17> base17_generator;
251
252 BOOST_TEST(test("515g7", base17_generator(424242)));
253 BOOST_TEST(test("515g7", base17_generator, 424242));
254
255 BOOST_TEST(test(max_unsigned_base17, base17_generator(0xffffffffu)));
256 BOOST_TEST(test(max_unsigned_base17, base17_generator, 0xffffffffu));
257 }
258
259 ///////////////////////////////////////////////////////////////////////////
260 // arbitrary radix test (base 18)
261 ///////////////////////////////////////////////////////////////////////////
262 {
263 uint_generator<boost::uint32_t, 18> base18_generator;
264
265 BOOST_TEST(test("40d70", base18_generator(424242)));
266 BOOST_TEST(test("40d70", base18_generator, 424242));
267
268 BOOST_TEST(test(max_unsigned_base18, base18_generator(0xffffffffu)));
269 BOOST_TEST(test(max_unsigned_base18, base18_generator, 0xffffffffu));
270 }
271
272 ///////////////////////////////////////////////////////////////////////////
273 // arbitrary radix test (base 19)
274 ///////////////////////////////////////////////////////////////////////////
275 {
276 uint_generator<boost::uint32_t, 19> base19_generator;
277
278 BOOST_TEST(test("34g3a", base19_generator(424242)));
279 BOOST_TEST(test("34g3a", base19_generator, 424242));
280
281 BOOST_TEST(test(max_unsigned_base19, base19_generator(0xffffffffu)));
282 BOOST_TEST(test(max_unsigned_base19, base19_generator, 0xffffffffu));
283 }
284
285 ///////////////////////////////////////////////////////////////////////////
286 // arbitrary radix test (base 20)
287 ///////////////////////////////////////////////////////////////////////////
288 {
289 uint_generator<boost::uint32_t, 20> base20_generator;
290
291 BOOST_TEST(test("2d0c2", base20_generator(424242)));
292 BOOST_TEST(test("2d0c2", base20_generator, 424242));
293
294 BOOST_TEST(test(max_unsigned_base20, base20_generator(0xffffffffu)));
295 BOOST_TEST(test(max_unsigned_base20, base20_generator, 0xffffffffu));
296 }
297
298 ///////////////////////////////////////////////////////////////////////////
299 // arbitrary radix test (base 21)
300 ///////////////////////////////////////////////////////////////////////////
301 {
302 uint_generator<boost::uint32_t, 21> base21_generator;
303
304 BOOST_TEST(test("23h00", base21_generator(424242)));
305 BOOST_TEST(test("23h00", base21_generator, 424242));
306
307 BOOST_TEST(test(max_unsigned_base21, base21_generator(0xffffffffu)));
308 BOOST_TEST(test(max_unsigned_base21, base21_generator, 0xffffffffu));
309 }
310
311 ///////////////////////////////////////////////////////////////////////////
312 // arbitrary radix test (base 22)
313 ///////////////////////////////////////////////////////////////////////////
314 {
315 uint_generator<boost::uint32_t, 22> base22_generator;
316
317 BOOST_TEST(test("1hibg", base22_generator(424242)));
318 BOOST_TEST(test("1hibg", base22_generator, 424242));
319
320 BOOST_TEST(test(max_unsigned_base22, base22_generator(0xffffffffu)));
321 BOOST_TEST(test(max_unsigned_base22, base22_generator, 0xffffffffu));
322 }
323
324 ///////////////////////////////////////////////////////////////////////////
325 // arbitrary radix test (base 23)
326 ///////////////////////////////////////////////////////////////////////////
327 {
328 uint_generator<boost::uint32_t, 23> base23_generator;
329
330 BOOST_TEST(test("1bjm7", base23_generator(424242)));
331 BOOST_TEST(test("1bjm7", base23_generator, 424242));
332
333 BOOST_TEST(test(max_unsigned_base23, base23_generator(0xffffffffu)));
334 BOOST_TEST(test(max_unsigned_base23, base23_generator, 0xffffffffu));
335 }
336
337 ///////////////////////////////////////////////////////////////////////////
338 // arbitrary radix test (base 24)
339 ///////////////////////////////////////////////////////////////////////////
340 {
341 uint_generator<boost::uint32_t, 24> base24_generator;
342
343 BOOST_TEST(test("16gci", base24_generator(424242)));
344 BOOST_TEST(test("16gci", base24_generator, 424242));
345
346 BOOST_TEST(test(max_unsigned_base24, base24_generator(0xffffffffu)));
347 BOOST_TEST(test(max_unsigned_base24, base24_generator, 0xffffffffu));
348 }
349
350 ///////////////////////////////////////////////////////////////////////////
351 // arbitrary radix test (base 25)
352 ///////////////////////////////////////////////////////////////////////////
353 {
354 uint_generator<boost::uint32_t, 25> base25_generator;
355
356 BOOST_TEST(test("123jh", base25_generator(424242)));
357 BOOST_TEST(test("123jh", base25_generator, 424242));
358
359 BOOST_TEST(test(max_unsigned_base25, base25_generator(0xffffffffu)));
360 BOOST_TEST(test(max_unsigned_base25, base25_generator, 0xffffffffu));
361 }
362
363 ///////////////////////////////////////////////////////////////////////////
364 // arbitrary radix test (base 26)
365 ///////////////////////////////////////////////////////////////////////////
366 {
367 uint_generator<boost::uint32_t, 26> base26_generator;
368
369 BOOST_TEST(test("o3f0", base26_generator(424242)));
370 BOOST_TEST(test("o3f0", base26_generator, 424242));
371
372 BOOST_TEST(test(max_unsigned_base26, base26_generator(0xffffffffu)));
373 BOOST_TEST(test(max_unsigned_base26, base26_generator, 0xffffffffu));
374 }
375
376 ///////////////////////////////////////////////////////////////////////////
377 // arbitrary radix test (base 27)
378 ///////////////////////////////////////////////////////////////////////////
379 {
380 uint_generator<boost::uint32_t, 27> base27_generator;
381
382 BOOST_TEST(test("lepi", base27_generator(424242)));
383 BOOST_TEST(test("lepi", base27_generator, 424242));
384
385 BOOST_TEST(test(max_unsigned_base27, base27_generator(0xffffffffu)));
386 BOOST_TEST(test(max_unsigned_base27, base27_generator, 0xffffffffu));
387 }
388
389 ///////////////////////////////////////////////////////////////////////////
390 // arbitrary radix test (base 28)
391 ///////////////////////////////////////////////////////////////////////////
392 {
393 uint_generator<boost::uint32_t, 28> base28_generator;
394
395 BOOST_TEST(test("j93e", base28_generator(424242)));
396 BOOST_TEST(test("j93e", base28_generator, 424242));
397
398 BOOST_TEST(test(max_unsigned_base28, base28_generator(0xffffffffu)));
399 BOOST_TEST(test(max_unsigned_base28, base28_generator, 0xffffffffu));
400 }
401
402 ///////////////////////////////////////////////////////////////////////////
403 // arbitrary radix test (base 29)
404 ///////////////////////////////////////////////////////////////////////////
405 {
406 uint_generator<boost::uint32_t, 29> base29_generator;
407
408 BOOST_TEST(test("hbd1", base29_generator(424242)));
409 BOOST_TEST(test("hbd1", base29_generator, 424242));
410
411 BOOST_TEST(test(max_unsigned_base29, base29_generator(0xffffffffu)));
412 BOOST_TEST(test(max_unsigned_base29, base29_generator, 0xffffffffu));
413 }
414
415 ///////////////////////////////////////////////////////////////////////////
416 // arbitrary radix test (base 30)
417 ///////////////////////////////////////////////////////////////////////////
418 {
419 uint_generator<boost::uint32_t, 30> base30_generator;
420
421 BOOST_TEST(test("flbc", base30_generator(424242)));
422 BOOST_TEST(test("flbc", base30_generator, 424242));
423
424 BOOST_TEST(test(max_unsigned_base30, base30_generator(0xffffffffu)));
425 BOOST_TEST(test(max_unsigned_base30, base30_generator, 0xffffffffu));
426 }
427
428 ///////////////////////////////////////////////////////////////////////////
429 // arbitrary radix test (base 31)
430 ///////////////////////////////////////////////////////////////////////////
431 {
432 uint_generator<boost::uint32_t, 31> base31_generator;
433
434 BOOST_TEST(test("e7e7", base31_generator(424242)));
435 BOOST_TEST(test("e7e7", base31_generator, 424242));
436
437 BOOST_TEST(test(max_unsigned_base31, base31_generator(0xffffffffu)));
438 BOOST_TEST(test(max_unsigned_base31, base31_generator, 0xffffffffu));
439 }
440
441 ///////////////////////////////////////////////////////////////////////////
442 // arbitrary radix test (base 32)
443 ///////////////////////////////////////////////////////////////////////////
444 {
445 uint_generator<boost::uint32_t, 32> base32_generator;
446
447 BOOST_TEST(test("cu9i", base32_generator(424242)));
448 BOOST_TEST(test("cu9i", base32_generator, 424242));
449
450 BOOST_TEST(test(max_unsigned_base32, base32_generator(0xffffffffu)));
451 BOOST_TEST(test(max_unsigned_base32, base32_generator, 0xffffffffu));
452 }
453
454 ///////////////////////////////////////////////////////////////////////////
455 // arbitrary radix test (base 33)
456 ///////////////////////////////////////////////////////////////////////////
457 {
458 uint_generator<boost::uint32_t, 33> base33_generator;
459
460 BOOST_TEST(test("bqir", base33_generator(424242)));
461 BOOST_TEST(test("bqir", base33_generator, 424242));
462
463 BOOST_TEST(test(max_unsigned_base33, base33_generator(0xffffffffu)));
464 BOOST_TEST(test(max_unsigned_base33, base33_generator, 0xffffffffu));
465 }
466
467 ///////////////////////////////////////////////////////////////////////////
468 // arbitrary radix test (base 34)
469 ///////////////////////////////////////////////////////////////////////////
470 {
471 uint_generator<boost::uint32_t, 34> base34_generator;
472
473 BOOST_TEST(test("aqxo", base34_generator(424242)));
474 BOOST_TEST(test("aqxo", base34_generator, 424242));
475
476 BOOST_TEST(test(max_unsigned_base34, base34_generator(0xffffffffu)));
477 BOOST_TEST(test(max_unsigned_base34, base34_generator, 0xffffffffu));
478 }
479
480 ///////////////////////////////////////////////////////////////////////////
481 // arbitrary radix test (base 35)
482 ///////////////////////////////////////////////////////////////////////////
483 {
484 uint_generator<boost::uint32_t, 35> base35_generator;
485
486 BOOST_TEST(test("9vb7", base35_generator(424242)));
487 BOOST_TEST(test("9vb7", base35_generator, 424242));
488
489 BOOST_TEST(test(max_unsigned_base35, base35_generator(0xffffffffu)));
490 BOOST_TEST(test(max_unsigned_base35, base35_generator, 0xffffffffu));
491 }
492
493 ///////////////////////////////////////////////////////////////////////////
494 // arbitrary radix test (base 36)
495 ///////////////////////////////////////////////////////////////////////////
496 {
497 uint_generator<boost::uint32_t, 36> base36_generator;
498
499 BOOST_TEST(test("93ci", base36_generator(424242)));
500 BOOST_TEST(test("93ci", base36_generator, 424242));
501
502 BOOST_TEST(test(max_unsigned_base36, base36_generator(0xffffffffu)));
503 BOOST_TEST(test(max_unsigned_base36, base36_generator, 0xffffffffu));
504 }
505
506 return boost::report_errors();
507 }