| 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 | |
| 13 | BOOST_PRAGMA_MESSAGE("Skipping test because C++11 is not available" ) |
| 14 | int main() {} |
| 15 | |
| 16 | #else |
| 17 | |
| 18 | #define F1(x, y) #y |
| 19 | |
| 20 | char const * s00 = "" BOOST_DESCRIBE_PP_FOR_EACH(F1, ~); |
| 21 | char const * s01 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a); |
| 22 | char const * s02 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b); |
| 23 | char const * s03 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c); |
| 24 | char const * s04 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d); |
| 25 | char const * s05 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e); |
| 26 | char const * s06 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f); |
| 27 | char const * s07 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g); |
| 28 | char const * s08 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h); |
| 29 | char const * s09 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i); |
| 30 | char const * s10 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j); |
| 31 | char const * s11 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k); |
| 32 | char const * s12 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l); |
| 33 | char const * s13 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m); |
| 34 | char const * s14 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n); |
| 35 | char const * s15 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); |
| 36 | char const * s16 = BOOST_DESCRIBE_PP_FOR_EACH(F1, ~, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p); |
| 37 | char 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); |
| 38 | char 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); |
| 39 | char 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); |
| 40 | char 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); |
| 41 | char 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); |
| 42 | char 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); |
| 43 | char 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); |
| 44 | char 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); |
| 45 | char 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); |
| 46 | char 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); |
| 47 | char 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); |
| 48 | char 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); |
| 49 | char 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); |
| 50 | char 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); |
| 51 | char 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); |
| 52 | char 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); |
| 53 | char 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); |
| 54 | char 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); |
| 55 | char 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); |
| 56 | char 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); |
| 57 | char 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); |
| 58 | char 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); |
| 59 | char 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); |
| 60 | char 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); |
| 61 | char 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); |
| 62 | char 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); |
| 63 | char 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); |
| 64 | char 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); |
| 65 | char 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); |
| 66 | char 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); |
| 67 | char 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); |
| 68 | char 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); |
| 69 | char 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); |
| 70 | char 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); |
| 71 | char 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); |
| 72 | char 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 | |
| 74 | int 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 | |