1
2 // (C) Copyright Edward Diener 2011-2015
3 // Use, modification and distribution are subject to the Boost Software License,
4 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt).
6
7 #include <boost/vmd/equal.hpp>
8 #include <boost/vmd/identity.hpp>
9 #include <libs/vmd/test/test_doc_example_switch.hpp>
10 #include <boost/detail/lightweight_test.hpp>
11
main()12 int main()
13 {
14
15 #if BOOST_PP_VARIADICS
16
17 //[ example_switch_defines
18
19 #define BOOST_VMD_SWITCH_TEST_1(number) \
20 test1_ ## number
21 /**/
22
23 #define BOOST_VMD_SWITCH_TEST_2(number) \
24 test2_ ## number
25 /**/
26
27 #define BOOST_VMD_SWITCH_TEST_3(number) \
28 test3_ ## number
29 /**/
30
31 #define BOOST_VMD_SWITCH_TEST_DEFAULT(number) \
32 test_default_ ## number
33 /**/
34
35 //]
36
37 #define BOOST_VMD_REGISTER_test1_7 (test1_7)
38 #define BOOST_VMD_REGISTER_test2_7 (test2_7)
39 #define BOOST_VMD_REGISTER_test3_7 (test3_7)
40 #define BOOST_VMD_REGISTER_test_default_7 (test_default_7)
41 #define BOOST_VMD_DETECT_test1_7_test1_7
42 #define BOOST_VMD_DETECT_test2_7_test2_7
43 #define BOOST_VMD_DETECT_test3_7_test3_7
44 #define BOOST_VMD_DETECT_test_default_7_test_default_7
45
46 BOOST_TEST(BOOST_VMD_EQUAL
47 (
48 //[ example_switch_defines_t1
49 BOOST_VMD_SWITCH(1,
50 (7),
51 (BOOST_VMD_SWITCH_TEST_DEFAULT),
52 (3,BOOST_VMD_SWITCH_TEST_3),
53 (1,BOOST_VMD_SWITCH_TEST_1),
54 (2,BOOST_VMD_SWITCH_TEST_2)
55 )
56 //]
57 ,test1_7
58 )
59 );
60
61 BOOST_TEST(BOOST_VMD_EQUAL
62 (
63 BOOST_VMD_SWITCH(2,
64 (7),
65 (BOOST_VMD_SWITCH_TEST_DEFAULT),
66 (1,BOOST_VMD_SWITCH_TEST_1),
67 (3,BOOST_VMD_SWITCH_TEST_3),
68 (2,BOOST_VMD_SWITCH_TEST_2)
69 )
70 ,test2_7
71 )
72 );
73
74 BOOST_TEST(BOOST_VMD_EQUAL
75 (
76 BOOST_VMD_SWITCH(3,
77 (7),
78 (BOOST_VMD_SWITCH_TEST_DEFAULT),
79 (1,BOOST_VMD_SWITCH_TEST_1),
80 (2,BOOST_VMD_SWITCH_TEST_2),
81 (3,BOOST_VMD_SWITCH_TEST_3)
82 )
83 ,test3_7
84 )
85 );
86
87 BOOST_TEST(BOOST_VMD_EQUAL
88 (
89 //[ example_switch_defines_t4
90 BOOST_VMD_SWITCH(4,
91 (7),
92 (BOOST_VMD_SWITCH_TEST_DEFAULT),
93 (2,BOOST_VMD_SWITCH_TEST_2),
94 (1,BOOST_VMD_SWITCH_TEST_1),
95 (3,BOOST_VMD_SWITCH_TEST_3)
96 )
97 //]
98 ,test_default_7
99 )
100 );
101
102 BOOST_TEST(BOOST_VMD_EQUAL
103 (
104 //[ example_switch_defines_t5
105 BOOST_VMD_SWITCH(143,
106 (7),
107 (BOOST_VMD_SWITCH_TEST_DEFAULT),
108 (1,BOOST_VMD_SWITCH_TEST_1),
109 (2,BOOST_VMD_SWITCH_TEST_2),
110 (3,BOOST_VMD_SWITCH_TEST_3),
111 (143,BOOST_VMD_SWITCH_IDENTITY(55))
112 )
113 //]
114 ,55
115 )
116 );
117
118 BOOST_TEST(BOOST_VMD_EQUAL
119 (
120 //[ example_switch_defines_t6
121 BOOST_VMD_SWITCH(155,
122 (7),
123 (BOOST_VMD_SWITCH_IDENTITY(77)),
124 (1,BOOST_VMD_SWITCH_TEST_1),
125 (2,BOOST_VMD_SWITCH_TEST_2),
126 (3,BOOST_VMD_SWITCH_TEST_3),
127 (143,BOOST_VMD_SWITCH_IDENTITY(55))
128 )
129 //]
130 ,77
131 )
132 );
133
134 BOOST_TEST(BOOST_VMD_EQUAL
135 (
136 //[ example_switch_defines_t7
137 BOOST_VMD_SWITCH(BOOST_VMD_TYPE_TUPLE,
138 (7),
139 (BOOST_VMD_SWITCH_TEST_DEFAULT),
140 (BOOST_VMD_TYPE_TUPLE,BOOST_VMD_SWITCH_TEST_1),
141 ((1,2,3),BOOST_VMD_SWITCH_TEST_3),
142 (2,BOOST_VMD_SWITCH_TEST_2)
143 )
144 //]
145 ,test1_7
146 )
147 );
148
149 #else
150
151 BOOST_ERROR("No variadic macro support");
152
153 #endif
154
155 return boost::report_errors();
156
157 }
158