1#include <boost/config.hpp>
2
3#if defined(BOOST_MSVC)
4#pragma warning(disable: 4786) // identifier truncated in debug info
5#pragma warning(disable: 4710) // function not inlined
6#pragma warning(disable: 4711) // function selected for automatic inline expansion
7#pragma warning(disable: 4514) // unreferenced inline removed
8#endif
9
10//
11// bind_fn2_test.cpp - test for functions w/ the type<> syntax
12//
13// Copyright (c) 2005, 2008 Peter Dimov
14//
15// Distributed under the Boost Software License, Version 1.0. (See
16// accompanying file LICENSE_1_0.txt or copy at
17// http://www.boost.org/LICENSE_1_0.txt)
18//
19
20#include <boost/bind/bind.hpp>
21#include <boost/core/lightweight_test.hpp>
22
23//
24
25long global_result;
26
27// long
28
29long f_0()
30{
31 return global_result = 17041L;
32}
33
34long f_1(long a)
35{
36 return global_result = a;
37}
38
39long f_2(long a, long b)
40{
41 return global_result = a + 10 * b;
42}
43
44long f_3(long a, long b, long c)
45{
46 return global_result = a + 10 * b + 100 * c;
47}
48
49long f_4(long a, long b, long c, long d)
50{
51 return global_result = a + 10 * b + 100 * c + 1000 * d;
52}
53
54long f_5(long a, long b, long c, long d, long e)
55{
56 return global_result = a + 10 * b + 100 * c + 1000 * d + 10000 * e;
57}
58
59long f_6(long a, long b, long c, long d, long e, long f)
60{
61 return global_result = a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f;
62}
63
64long f_7(long a, long b, long c, long d, long e, long f, long g)
65{
66 return global_result = a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f + 1000000 * g;
67}
68
69long f_8(long a, long b, long c, long d, long e, long f, long g, long h)
70{
71 return global_result = a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f + 1000000 * g + 10000000 * h;
72}
73
74long f_9(long a, long b, long c, long d, long e, long f, long g, long h, long i)
75{
76 return global_result = a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f + 1000000 * g + 10000000 * h + 100000000 * i;
77}
78
79// void
80
81void fv_0()
82{
83 global_result = 17041L;
84}
85
86void fv_1(long a)
87{
88 global_result = a;
89}
90
91void fv_2(long a, long b)
92{
93 global_result = a + 10 * b;
94}
95
96void fv_3(long a, long b, long c)
97{
98 global_result = a + 10 * b + 100 * c;
99}
100
101void fv_4(long a, long b, long c, long d)
102{
103 global_result = a + 10 * b + 100 * c + 1000 * d;
104}
105
106void fv_5(long a, long b, long c, long d, long e)
107{
108 global_result = a + 10 * b + 100 * c + 1000 * d + 10000 * e;
109}
110
111void fv_6(long a, long b, long c, long d, long e, long f)
112{
113 global_result = a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f;
114}
115
116void fv_7(long a, long b, long c, long d, long e, long f, long g)
117{
118 global_result = a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f + 1000000 * g;
119}
120
121void fv_8(long a, long b, long c, long d, long e, long f, long g, long h)
122{
123 global_result = a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f + 1000000 * g + 10000000 * h;
124}
125
126void fv_9(long a, long b, long c, long d, long e, long f, long g, long h, long i)
127{
128 global_result = a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f + 1000000 * g + 10000000 * h + 100000000 * i;
129}
130
131void function_test()
132{
133 using namespace boost;
134
135 bind( type<void>(), f: f_0 )(); BOOST_TEST( global_result == 17041L );
136 bind( type<void>(), f: f_1, a: 1 )(); BOOST_TEST( global_result == 1L );
137 bind( type<void>(), f: f_2, a: 1, a: 2 )(); BOOST_TEST( global_result == 21L );
138 bind( type<void>(), f: f_3, a: 1, a: 2, a: 3 )(); BOOST_TEST( global_result == 321L );
139 bind( type<void>(), f: f_4, a: 1, a: 2, a: 3, a: 4 )(); BOOST_TEST( global_result == 4321L );
140 bind( type<void>(), f: f_5, a: 1, a: 2, a: 3, a: 4, a: 5 )(); BOOST_TEST( global_result == 54321L );
141 bind( type<void>(), f: f_6, a: 1, a: 2, a: 3, a: 4, a: 5, a: 6 )(); BOOST_TEST( global_result == 654321L );
142 bind( type<void>(), f: f_7, a: 1, a: 2, a: 3, a: 4, a: 5, a: 6, a: 7 )(); BOOST_TEST( global_result == 7654321L );
143 bind( type<void>(), f: f_8, a: 1, a: 2, a: 3, a: 4, a: 5, a: 6, a: 7, a: 8 )(); BOOST_TEST( global_result == 87654321L );
144 bind( type<void>(), f: f_9, a: 1, a: 2, a: 3, a: 4, a: 5, a: 6, a: 7, a: 8, a: 9 )(); BOOST_TEST( global_result == 987654321L );
145
146 bind( type<void>(), f: fv_0 )(); BOOST_TEST( global_result == 17041L );
147 bind( type<void>(), f: fv_1, a: 1 )(); BOOST_TEST( global_result == 1L );
148 bind( type<void>(), f: fv_2, a: 1, a: 2 )(); BOOST_TEST( global_result == 21L );
149 bind( type<void>(), f: fv_3, a: 1, a: 2, a: 3 )(); BOOST_TEST( global_result == 321L );
150 bind( type<void>(), f: fv_4, a: 1, a: 2, a: 3, a: 4 )(); BOOST_TEST( global_result == 4321L );
151 bind( type<void>(), f: fv_5, a: 1, a: 2, a: 3, a: 4, a: 5 )(); BOOST_TEST( global_result == 54321L );
152 bind( type<void>(), f: fv_6, a: 1, a: 2, a: 3, a: 4, a: 5, a: 6 )(); BOOST_TEST( global_result == 654321L );
153 bind( type<void>(), f: fv_7, a: 1, a: 2, a: 3, a: 4, a: 5, a: 6, a: 7 )(); BOOST_TEST( global_result == 7654321L );
154 bind( type<void>(), f: fv_8, a: 1, a: 2, a: 3, a: 4, a: 5, a: 6, a: 7, a: 8 )(); BOOST_TEST( global_result == 87654321L );
155 bind( type<void>(), f: fv_9, a: 1, a: 2, a: 3, a: 4, a: 5, a: 6, a: 7, a: 8, a: 9 )(); BOOST_TEST( global_result == 987654321L );
156}
157
158int main()
159{
160 function_test();
161 return boost::report_errors();
162}
163

source code of boost/libs/bind/test/bind_fn2_test.cpp