diff options
Diffstat (limited to 'libs/bind/test/bind_fwd_test.cpp')
-rw-r--r-- | libs/bind/test/bind_fwd_test.cpp | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/libs/bind/test/bind_fwd_test.cpp b/libs/bind/test/bind_fwd_test.cpp new file mode 100644 index 000000000..92bd3b184 --- /dev/null +++ b/libs/bind/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(); +} |