1 | #include <boost/config.hpp> |
2 | |
3 | // |
4 | // bind_fwd_test.cpp - forwarding test |
5 | // |
6 | // Copyright (c) 2015 Peter Dimov |
7 | // |
8 | // Distributed under the Boost Software License, Version 1.0. |
9 | // See accompanying file LICENSE_1_0.txt or copy at |
10 | // http://www.boost.org/LICENSE_1_0.txt |
11 | // |
12 | |
13 | #include <boost/bind/bind.hpp> |
14 | #include <boost/core/lightweight_test.hpp> |
15 | |
16 | using namespace boost::placeholders; |
17 | |
18 | // |
19 | |
20 | void fv1( int & a ) |
21 | { |
22 | a = 1; |
23 | } |
24 | |
25 | void fv2( int & a, int & b ) |
26 | { |
27 | a = 1; |
28 | b = 2; |
29 | } |
30 | |
31 | void fv3( int & a, int & b, int & c ) |
32 | { |
33 | a = 1; |
34 | b = 2; |
35 | c = 3; |
36 | } |
37 | |
38 | void fv4( int & a, int & b, int & c, int & d ) |
39 | { |
40 | a = 1; |
41 | b = 2; |
42 | c = 3; |
43 | d = 4; |
44 | } |
45 | |
46 | void fv5( int & a, int & b, int & c, int & d, int & e ) |
47 | { |
48 | a = 1; |
49 | b = 2; |
50 | c = 3; |
51 | d = 4; |
52 | e = 5; |
53 | } |
54 | |
55 | void fv6( int & a, int & b, int & c, int & d, int & e, int & f ) |
56 | { |
57 | a = 1; |
58 | b = 2; |
59 | c = 3; |
60 | d = 4; |
61 | e = 5; |
62 | f = 6; |
63 | } |
64 | |
65 | void fv7( int & a, int & b, int & c, int & d, int & e, int & f, int & g ) |
66 | { |
67 | a = 1; |
68 | b = 2; |
69 | c = 3; |
70 | d = 4; |
71 | e = 5; |
72 | f = 6; |
73 | g = 7; |
74 | } |
75 | |
76 | void fv8( int & a, int & b, int & c, int & d, int & e, int & f, int & g, int & h ) |
77 | { |
78 | a = 1; |
79 | b = 2; |
80 | c = 3; |
81 | d = 4; |
82 | e = 5; |
83 | f = 6; |
84 | g = 7; |
85 | h = 8; |
86 | } |
87 | |
88 | void fv9( int & a, int & b, int & c, int & d, int & e, int & f, int & g, int & h, int & i ) |
89 | { |
90 | a = 1; |
91 | b = 2; |
92 | c = 3; |
93 | d = 4; |
94 | e = 5; |
95 | f = 6; |
96 | g = 7; |
97 | h = 8; |
98 | i = 9; |
99 | } |
100 | |
101 | void test() |
102 | { |
103 | { |
104 | int a = 0; |
105 | |
106 | boost::bind( f: fv1, a1: _1 )( a ); |
107 | |
108 | BOOST_TEST( a == 1 ); |
109 | } |
110 | |
111 | { |
112 | int a = 0; |
113 | int b = 0; |
114 | |
115 | boost::bind( f: fv2, a1: _1, a2: _2 )( a, b ); |
116 | |
117 | BOOST_TEST( a == 1 ); |
118 | BOOST_TEST( b == 2 ); |
119 | } |
120 | |
121 | { |
122 | int a = 0; |
123 | int b = 0; |
124 | int c = 0; |
125 | |
126 | boost::bind( f: fv3, a1: _1, a2: _2, a3: _3 )( a, b, c ); |
127 | |
128 | BOOST_TEST( a == 1 ); |
129 | BOOST_TEST( b == 2 ); |
130 | BOOST_TEST( c == 3 ); |
131 | } |
132 | |
133 | { |
134 | int a = 0; |
135 | int b = 0; |
136 | int c = 0; |
137 | int d = 0; |
138 | |
139 | boost::bind( f: fv4, a1: _1, a2: _2, a3: _3, a4: _4 )( a, b, c, d ); |
140 | |
141 | BOOST_TEST( a == 1 ); |
142 | BOOST_TEST( b == 2 ); |
143 | BOOST_TEST( c == 3 ); |
144 | BOOST_TEST( d == 4 ); |
145 | } |
146 | |
147 | { |
148 | int a = 0; |
149 | int b = 0; |
150 | int c = 0; |
151 | int d = 0; |
152 | int e = 0; |
153 | |
154 | boost::bind( f: fv5, a1: _1, a2: _2, a3: _3, a4: _4, a5: _5 )( a, b, c, d, e ); |
155 | |
156 | BOOST_TEST( a == 1 ); |
157 | BOOST_TEST( b == 2 ); |
158 | BOOST_TEST( c == 3 ); |
159 | BOOST_TEST( d == 4 ); |
160 | BOOST_TEST( e == 5 ); |
161 | } |
162 | |
163 | { |
164 | int a = 0; |
165 | int b = 0; |
166 | int c = 0; |
167 | int d = 0; |
168 | int e = 0; |
169 | int f = 0; |
170 | |
171 | boost::bind( f: fv6, a1: _1, a2: _2, a3: _3, a4: _4, a5: _5, a6: _6 )( a, b, c, d, e, f ); |
172 | |
173 | BOOST_TEST( a == 1 ); |
174 | BOOST_TEST( b == 2 ); |
175 | BOOST_TEST( c == 3 ); |
176 | BOOST_TEST( d == 4 ); |
177 | BOOST_TEST( e == 5 ); |
178 | BOOST_TEST( f == 6 ); |
179 | } |
180 | |
181 | { |
182 | int a = 0; |
183 | int b = 0; |
184 | int c = 0; |
185 | int d = 0; |
186 | int e = 0; |
187 | int f = 0; |
188 | int g = 0; |
189 | |
190 | boost::bind( f: fv7, a1: _1, a2: _2, a3: _3, a4: _4, a5: _5, a6: _6, a7: _7 )( a, b, c, d, e, f, g ); |
191 | |
192 | BOOST_TEST( a == 1 ); |
193 | BOOST_TEST( b == 2 ); |
194 | BOOST_TEST( c == 3 ); |
195 | BOOST_TEST( d == 4 ); |
196 | BOOST_TEST( e == 5 ); |
197 | BOOST_TEST( f == 6 ); |
198 | BOOST_TEST( g == 7 ); |
199 | } |
200 | |
201 | { |
202 | int a = 0; |
203 | int b = 0; |
204 | int c = 0; |
205 | int d = 0; |
206 | int e = 0; |
207 | int f = 0; |
208 | int g = 0; |
209 | int h = 0; |
210 | |
211 | boost::bind( f: fv8, a1: _1, a2: _2, a3: _3, a4: _4, a5: _5, a6: _6, a7: _7, a8: _8 )( a, b, c, d, e, f, g, h ); |
212 | |
213 | BOOST_TEST( a == 1 ); |
214 | BOOST_TEST( b == 2 ); |
215 | BOOST_TEST( c == 3 ); |
216 | BOOST_TEST( d == 4 ); |
217 | BOOST_TEST( e == 5 ); |
218 | BOOST_TEST( f == 6 ); |
219 | BOOST_TEST( g == 7 ); |
220 | BOOST_TEST( h == 8 ); |
221 | } |
222 | |
223 | { |
224 | int a = 0; |
225 | int b = 0; |
226 | int c = 0; |
227 | int d = 0; |
228 | int e = 0; |
229 | int f = 0; |
230 | int g = 0; |
231 | int h = 0; |
232 | int i = 0; |
233 | |
234 | boost::bind( f: fv9, a1: _1, a2: _2, a3: _3, a4: _4, a5: _5, a6: _6, a7: _7, a8: _8, a9: _9 )( a, b, c, d, e, f, g, h, i ); |
235 | |
236 | BOOST_TEST( a == 1 ); |
237 | BOOST_TEST( b == 2 ); |
238 | BOOST_TEST( c == 3 ); |
239 | BOOST_TEST( d == 4 ); |
240 | BOOST_TEST( e == 5 ); |
241 | BOOST_TEST( f == 6 ); |
242 | BOOST_TEST( g == 7 ); |
243 | BOOST_TEST( h == 8 ); |
244 | BOOST_TEST( i == 9 ); |
245 | } |
246 | } |
247 | |
248 | int main() |
249 | { |
250 | test(); |
251 | return boost::report_errors(); |
252 | } |
253 | |