Squashed 'third_party/boostorg/bind/' content from commit d67200b
Change-Id: I21573b0bd786f4e8482a7bb79a73b7574be6bdae
git-subtree-dir: third_party/boostorg/bind
git-subtree-split: d67200bd2a1f67135a4c677636546ec9615e21ea
diff --git a/test/bind_fwd_test.cpp b/test/bind_fwd_test.cpp
new file mode 100644
index 0000000..92bd3b1
--- /dev/null
+++ b/test/bind_fwd_test.cpp
@@ -0,0 +1,250 @@
+#include <boost/config.hpp>
+
+//
+// bind_fwd_test.cpp - forwarding test
+//
+// Copyright (c) 2015 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+
+#include <boost/bind.hpp>
+#include <boost/detail/lightweight_test.hpp>
+
+//
+
+void fv1( int & a )
+{
+ a = 1;
+}
+
+void fv2( int & a, int & b )
+{
+ a = 1;
+ b = 2;
+}
+
+void fv3( int & a, int & b, int & c )
+{
+ a = 1;
+ b = 2;
+ c = 3;
+}
+
+void fv4( int & a, int & b, int & c, int & d )
+{
+ a = 1;
+ b = 2;
+ c = 3;
+ d = 4;
+}
+
+void fv5( int & a, int & b, int & c, int & d, int & e )
+{
+ a = 1;
+ b = 2;
+ c = 3;
+ d = 4;
+ e = 5;
+}
+
+void fv6( int & a, int & b, int & c, int & d, int & e, int & f )
+{
+ a = 1;
+ b = 2;
+ c = 3;
+ d = 4;
+ e = 5;
+ f = 6;
+}
+
+void fv7( int & a, int & b, int & c, int & d, int & e, int & f, int & g )
+{
+ a = 1;
+ b = 2;
+ c = 3;
+ d = 4;
+ e = 5;
+ f = 6;
+ g = 7;
+}
+
+void fv8( int & a, int & b, int & c, int & d, int & e, int & f, int & g, int & h )
+{
+ a = 1;
+ b = 2;
+ c = 3;
+ d = 4;
+ e = 5;
+ f = 6;
+ g = 7;
+ h = 8;
+}
+
+void fv9( int & a, int & b, int & c, int & d, int & e, int & f, int & g, int & h, int & i )
+{
+ a = 1;
+ b = 2;
+ c = 3;
+ d = 4;
+ e = 5;
+ f = 6;
+ g = 7;
+ h = 8;
+ i = 9;
+}
+
+void test()
+{
+ {
+ int a = 0;
+
+ boost::bind( fv1, _1 )( a );
+
+ BOOST_TEST( a == 1 );
+ }
+
+ {
+ int a = 0;
+ int b = 0;
+
+ boost::bind( fv2, _1, _2 )( a, b );
+
+ BOOST_TEST( a == 1 );
+ BOOST_TEST( b == 2 );
+ }
+
+ {
+ int a = 0;
+ int b = 0;
+ int c = 0;
+
+ boost::bind( fv3, _1, _2, _3 )( a, b, c );
+
+ BOOST_TEST( a == 1 );
+ BOOST_TEST( b == 2 );
+ BOOST_TEST( c == 3 );
+ }
+
+ {
+ int a = 0;
+ int b = 0;
+ int c = 0;
+ int d = 0;
+
+ boost::bind( fv4, _1, _2, _3, _4 )( a, b, c, d );
+
+ BOOST_TEST( a == 1 );
+ BOOST_TEST( b == 2 );
+ BOOST_TEST( c == 3 );
+ BOOST_TEST( d == 4 );
+ }
+
+ {
+ int a = 0;
+ int b = 0;
+ int c = 0;
+ int d = 0;
+ int e = 0;
+
+ boost::bind( fv5, _1, _2, _3, _4, _5 )( a, b, c, d, e );
+
+ BOOST_TEST( a == 1 );
+ BOOST_TEST( b == 2 );
+ BOOST_TEST( c == 3 );
+ BOOST_TEST( d == 4 );
+ BOOST_TEST( e == 5 );
+ }
+
+ {
+ int a = 0;
+ int b = 0;
+ int c = 0;
+ int d = 0;
+ int e = 0;
+ int f = 0;
+
+ boost::bind( fv6, _1, _2, _3, _4, _5, _6 )( a, b, c, d, e, f );
+
+ BOOST_TEST( a == 1 );
+ BOOST_TEST( b == 2 );
+ BOOST_TEST( c == 3 );
+ BOOST_TEST( d == 4 );
+ BOOST_TEST( e == 5 );
+ BOOST_TEST( f == 6 );
+ }
+
+ {
+ int a = 0;
+ int b = 0;
+ int c = 0;
+ int d = 0;
+ int e = 0;
+ int f = 0;
+ int g = 0;
+
+ boost::bind( fv7, _1, _2, _3, _4, _5, _6, _7 )( a, b, c, d, e, f, g );
+
+ BOOST_TEST( a == 1 );
+ BOOST_TEST( b == 2 );
+ BOOST_TEST( c == 3 );
+ BOOST_TEST( d == 4 );
+ BOOST_TEST( e == 5 );
+ BOOST_TEST( f == 6 );
+ BOOST_TEST( g == 7 );
+ }
+
+ {
+ int a = 0;
+ int b = 0;
+ int c = 0;
+ int d = 0;
+ int e = 0;
+ int f = 0;
+ int g = 0;
+ int h = 0;
+
+ boost::bind( fv8, _1, _2, _3, _4, _5, _6, _7, _8 )( a, b, c, d, e, f, g, h );
+
+ BOOST_TEST( a == 1 );
+ BOOST_TEST( b == 2 );
+ BOOST_TEST( c == 3 );
+ BOOST_TEST( d == 4 );
+ BOOST_TEST( e == 5 );
+ BOOST_TEST( f == 6 );
+ BOOST_TEST( g == 7 );
+ BOOST_TEST( h == 8 );
+ }
+
+ {
+ int a = 0;
+ int b = 0;
+ int c = 0;
+ int d = 0;
+ int e = 0;
+ int f = 0;
+ int g = 0;
+ int h = 0;
+ int i = 0;
+
+ boost::bind( fv9, _1, _2, _3, _4, _5, _6, _7, _8, _9 )( a, b, c, d, e, f, g, h, i );
+
+ BOOST_TEST( a == 1 );
+ BOOST_TEST( b == 2 );
+ BOOST_TEST( c == 3 );
+ BOOST_TEST( d == 4 );
+ BOOST_TEST( e == 5 );
+ BOOST_TEST( f == 6 );
+ BOOST_TEST( g == 7 );
+ BOOST_TEST( h == 8 );
+ BOOST_TEST( i == 9 );
+ }
+}
+
+int main()
+{
+ test();
+ return boost::report_errors();
+}