1// Copyright 2020 Peter Dimov
2// Distributed under the Boost Software License, Version 1.0.
3// https://www.boost.org/LICENSE_1_0.txt
4
5#include <boost/describe/detail/pp_for_each.hpp>
6#include <boost/describe/detail/config.hpp>
7#include <boost/core/lightweight_test.hpp>
8
9#if !defined(BOOST_DESCRIBE_CXX11)
10
11#include <boost/config/pragma_message.hpp>
12
13BOOST_PRAGMA_MESSAGE("Skipping test because C++11 is not available")
14int main() {}
15
16#else
17
18#define F1(x, y) #y
19
20char const * s00 = "" BOOST_DESCRIBE_PP_FOR_EACH(F1, ~);
21char const * s01 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a);
22char const * s02 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b);
23char const * s03 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c);
24char const * s04 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d);
25char const * s05 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e);
26char const * s06 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f);
27char const * s07 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g);
28char const * s08 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h);
29char const * s09 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i);
30char const * s10 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j);
31char const * s11 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k);
32char const * s12 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l);
33char const * s13 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m);
34char const * s14 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n);
35char const * s15 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
36char const * s16 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p);
37char const * s17 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q);
38char const * s18 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r);
39char const * s19 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s);
40char const * s20 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t);
41char const * s21 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u);
42char const * s22 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v);
43char const * s23 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w);
44char const * s24 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x);
45char const * s25 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y);
46char const * s26 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z);
47char const * s27 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A);
48char const * s28 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B);
49char const * s29 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C);
50char const * s30 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D);
51char const * s31 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E);
52char const * s32 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F);
53char const * s33 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G);
54char const * s34 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H);
55char const * s35 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I);
56char const * s36 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J);
57char const * s37 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K);
58char const * s38 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L);
59char const * s39 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M);
60char const * s40 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N);
61char const * s41 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O);
62char const * s42 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P);
63char const * s43 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q);
64char const * s44 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R);
65char const * s45 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S);
66char const * s46 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T);
67char const * s47 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U);
68char const * s48 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V);
69char const * s49 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W);
70char const * s50 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X);
71char const * s51 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y);
72char const * s52 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z);
73
74int main()
75{
76 BOOST_TEST_CSTR_EQ( s00, "" );
77 BOOST_TEST_CSTR_EQ( s01, "a" );
78 BOOST_TEST_CSTR_EQ( s02, "ab" );
79 BOOST_TEST_CSTR_EQ( s03, "abc" );
80 BOOST_TEST_CSTR_EQ( s04, "abcd" );
81 BOOST_TEST_CSTR_EQ( s05, "abcde" );
82 BOOST_TEST_CSTR_EQ( s06, "abcdef" );
83 BOOST_TEST_CSTR_EQ( s07, "abcdefg" );
84 BOOST_TEST_CSTR_EQ( s08, "abcdefgh" );
85 BOOST_TEST_CSTR_EQ( s09, "abcdefghi" );
86 BOOST_TEST_CSTR_EQ( s10, "abcdefghij" );
87 BOOST_TEST_CSTR_EQ( s11, "abcdefghijk" );
88 BOOST_TEST_CSTR_EQ( s12, "abcdefghijkl" );
89 BOOST_TEST_CSTR_EQ( s13, "abcdefghijklm" );
90 BOOST_TEST_CSTR_EQ( s14, "abcdefghijklmn" );
91 BOOST_TEST_CSTR_EQ( s15, "abcdefghijklmno" );
92 BOOST_TEST_CSTR_EQ( s16, "abcdefghijklmnop" );
93 BOOST_TEST_CSTR_EQ( s17, "abcdefghijklmnopq" );
94 BOOST_TEST_CSTR_EQ( s18, "abcdefghijklmnopqr" );
95 BOOST_TEST_CSTR_EQ( s19, "abcdefghijklmnopqrs" );
96 BOOST_TEST_CSTR_EQ( s20, "abcdefghijklmnopqrst" );
97 BOOST_TEST_CSTR_EQ( s21, "abcdefghijklmnopqrstu" );
98 BOOST_TEST_CSTR_EQ( s22, "abcdefghijklmnopqrstuv" );
99 BOOST_TEST_CSTR_EQ( s23, "abcdefghijklmnopqrstuvw" );
100 BOOST_TEST_CSTR_EQ( s24, "abcdefghijklmnopqrstuvwx" );
101 BOOST_TEST_CSTR_EQ( s25, "abcdefghijklmnopqrstuvwxy" );
102 BOOST_TEST_CSTR_EQ( s26, "abcdefghijklmnopqrstuvwxyz" );
103 BOOST_TEST_CSTR_EQ( s27, "abcdefghijklmnopqrstuvwxyzA" );
104 BOOST_TEST_CSTR_EQ( s28, "abcdefghijklmnopqrstuvwxyzAB" );
105 BOOST_TEST_CSTR_EQ( s29, "abcdefghijklmnopqrstuvwxyzABC" );
106 BOOST_TEST_CSTR_EQ( s30, "abcdefghijklmnopqrstuvwxyzABCD" );
107 BOOST_TEST_CSTR_EQ( s31, "abcdefghijklmnopqrstuvwxyzABCDE" );
108 BOOST_TEST_CSTR_EQ( s32, "abcdefghijklmnopqrstuvwxyzABCDEF" );
109 BOOST_TEST_CSTR_EQ( s33, "abcdefghijklmnopqrstuvwxyzABCDEFG" );
110 BOOST_TEST_CSTR_EQ( s34, "abcdefghijklmnopqrstuvwxyzABCDEFGH" );
111 BOOST_TEST_CSTR_EQ( s35, "abcdefghijklmnopqrstuvwxyzABCDEFGHI" );
112 BOOST_TEST_CSTR_EQ( s36, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJ" );
113 BOOST_TEST_CSTR_EQ( s37, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJK" );
114 BOOST_TEST_CSTR_EQ( s38, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL" );
115 BOOST_TEST_CSTR_EQ( s39, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM" );
116 BOOST_TEST_CSTR_EQ( s40, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN" );
117 BOOST_TEST_CSTR_EQ( s41, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO" );
118 BOOST_TEST_CSTR_EQ( s42, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP" );
119 BOOST_TEST_CSTR_EQ( s43, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ" );
120 BOOST_TEST_CSTR_EQ( s44, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR" );
121 BOOST_TEST_CSTR_EQ( s45, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS" );
122 BOOST_TEST_CSTR_EQ( s46, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST" );
123 BOOST_TEST_CSTR_EQ( s47, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU" );
124 BOOST_TEST_CSTR_EQ( s48, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV" );
125 BOOST_TEST_CSTR_EQ( s49, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW" );
126 BOOST_TEST_CSTR_EQ( s50, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX" );
127 BOOST_TEST_CSTR_EQ( s51, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY" );
128 BOOST_TEST_CSTR_EQ( s52, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" );
129
130 return boost::report_errors();
131}
132
133#endif // !defined(BOOST_DESCRIBE_CXX11)
134

source code of boost/libs/describe/test/pp_for_each_test.cpp