• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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