bind_fwd_test.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. #include <boost/config.hpp>
  2. //
  3. // bind_fwd_test.cpp - forwarding test
  4. //
  5. // Copyright (c) 2015 Peter Dimov
  6. //
  7. // Distributed under the Boost Software License, Version 1.0.
  8. // See accompanying file LICENSE_1_0.txt or copy at
  9. // http://www.boost.org/LICENSE_1_0.txt
  10. //
  11. #include <boost/bind.hpp>
  12. #include <boost/detail/lightweight_test.hpp>
  13. //
  14. void fv1( int & a )
  15. {
  16. a = 1;
  17. }
  18. void fv2( int & a, int & b )
  19. {
  20. a = 1;
  21. b = 2;
  22. }
  23. void fv3( int & a, int & b, int & c )
  24. {
  25. a = 1;
  26. b = 2;
  27. c = 3;
  28. }
  29. void fv4( int & a, int & b, int & c, int & d )
  30. {
  31. a = 1;
  32. b = 2;
  33. c = 3;
  34. d = 4;
  35. }
  36. void fv5( int & a, int & b, int & c, int & d, int & e )
  37. {
  38. a = 1;
  39. b = 2;
  40. c = 3;
  41. d = 4;
  42. e = 5;
  43. }
  44. void fv6( int & a, int & b, int & c, int & d, int & e, int & f )
  45. {
  46. a = 1;
  47. b = 2;
  48. c = 3;
  49. d = 4;
  50. e = 5;
  51. f = 6;
  52. }
  53. void fv7( int & a, int & b, int & c, int & d, int & e, int & f, int & g )
  54. {
  55. a = 1;
  56. b = 2;
  57. c = 3;
  58. d = 4;
  59. e = 5;
  60. f = 6;
  61. g = 7;
  62. }
  63. void fv8( int & a, int & b, int & c, int & d, int & e, int & f, int & g, int & h )
  64. {
  65. a = 1;
  66. b = 2;
  67. c = 3;
  68. d = 4;
  69. e = 5;
  70. f = 6;
  71. g = 7;
  72. h = 8;
  73. }
  74. void fv9( int & a, int & b, int & c, int & d, int & e, int & f, int & g, int & h, int & i )
  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. i = 9;
  85. }
  86. void test()
  87. {
  88. {
  89. int a = 0;
  90. boost::bind( fv1, _1 )( a );
  91. BOOST_TEST( a == 1 );
  92. }
  93. {
  94. int a = 0;
  95. int b = 0;
  96. boost::bind( fv2, _1, _2 )( a, b );
  97. BOOST_TEST( a == 1 );
  98. BOOST_TEST( b == 2 );
  99. }
  100. {
  101. int a = 0;
  102. int b = 0;
  103. int c = 0;
  104. boost::bind( fv3, _1, _2, _3 )( a, b, c );
  105. BOOST_TEST( a == 1 );
  106. BOOST_TEST( b == 2 );
  107. BOOST_TEST( c == 3 );
  108. }
  109. {
  110. int a = 0;
  111. int b = 0;
  112. int c = 0;
  113. int d = 0;
  114. boost::bind( fv4, _1, _2, _3, _4 )( a, b, c, d );
  115. BOOST_TEST( a == 1 );
  116. BOOST_TEST( b == 2 );
  117. BOOST_TEST( c == 3 );
  118. BOOST_TEST( d == 4 );
  119. }
  120. {
  121. int a = 0;
  122. int b = 0;
  123. int c = 0;
  124. int d = 0;
  125. int e = 0;
  126. boost::bind( fv5, _1, _2, _3, _4, _5 )( a, b, c, d, e );
  127. BOOST_TEST( a == 1 );
  128. BOOST_TEST( b == 2 );
  129. BOOST_TEST( c == 3 );
  130. BOOST_TEST( d == 4 );
  131. BOOST_TEST( e == 5 );
  132. }
  133. {
  134. int a = 0;
  135. int b = 0;
  136. int c = 0;
  137. int d = 0;
  138. int e = 0;
  139. int f = 0;
  140. boost::bind( fv6, _1, _2, _3, _4, _5, _6 )( a, b, c, d, e, f );
  141. BOOST_TEST( a == 1 );
  142. BOOST_TEST( b == 2 );
  143. BOOST_TEST( c == 3 );
  144. BOOST_TEST( d == 4 );
  145. BOOST_TEST( e == 5 );
  146. BOOST_TEST( f == 6 );
  147. }
  148. {
  149. int a = 0;
  150. int b = 0;
  151. int c = 0;
  152. int d = 0;
  153. int e = 0;
  154. int f = 0;
  155. int g = 0;
  156. boost::bind( fv7, _1, _2, _3, _4, _5, _6, _7 )( a, b, c, d, e, f, g );
  157. BOOST_TEST( a == 1 );
  158. BOOST_TEST( b == 2 );
  159. BOOST_TEST( c == 3 );
  160. BOOST_TEST( d == 4 );
  161. BOOST_TEST( e == 5 );
  162. BOOST_TEST( f == 6 );
  163. BOOST_TEST( g == 7 );
  164. }
  165. {
  166. int a = 0;
  167. int b = 0;
  168. int c = 0;
  169. int d = 0;
  170. int e = 0;
  171. int f = 0;
  172. int g = 0;
  173. int h = 0;
  174. boost::bind( fv8, _1, _2, _3, _4, _5, _6, _7, _8 )( a, b, c, d, e, f, g, h );
  175. BOOST_TEST( a == 1 );
  176. BOOST_TEST( b == 2 );
  177. BOOST_TEST( c == 3 );
  178. BOOST_TEST( d == 4 );
  179. BOOST_TEST( e == 5 );
  180. BOOST_TEST( f == 6 );
  181. BOOST_TEST( g == 7 );
  182. BOOST_TEST( h == 8 );
  183. }
  184. {
  185. int a = 0;
  186. int b = 0;
  187. int c = 0;
  188. int d = 0;
  189. int e = 0;
  190. int f = 0;
  191. int g = 0;
  192. int h = 0;
  193. int i = 0;
  194. boost::bind( fv9, _1, _2, _3, _4, _5, _6, _7, _8, _9 )( a, b, c, d, e, f, g, h, i );
  195. BOOST_TEST( a == 1 );
  196. BOOST_TEST( b == 2 );
  197. BOOST_TEST( c == 3 );
  198. BOOST_TEST( d == 4 );
  199. BOOST_TEST( e == 5 );
  200. BOOST_TEST( f == 6 );
  201. BOOST_TEST( g == 7 );
  202. BOOST_TEST( h == 8 );
  203. BOOST_TEST( i == 9 );
  204. }
  205. }
  206. int main()
  207. {
  208. test();
  209. return boost::report_errors();
  210. }