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