forked from boostorg/bind
bind_dm_test.cpp added.
[SVN r27629]
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# Boost.Bind Library test Jamfile
|
# Boost.Bind Library test Jamfile
|
||||||
#
|
#
|
||||||
# Copyright (c) 2003, 2004 Peter Dimov
|
# Copyright (c) 2003-2005 Peter Dimov
|
||||||
#
|
#
|
||||||
# Permission to copy, use, modify, sell and distribute this software
|
# Permission to copy, use, modify, sell and distribute this software
|
||||||
# is granted provided this copyright notice appears in all copies.
|
# is granted provided this copyright notice appears in all copies.
|
||||||
@@ -18,6 +18,7 @@ DEPENDS all : bind ;
|
|||||||
{
|
{
|
||||||
test-suite "bind"
|
test-suite "bind"
|
||||||
: [ run bind_test.cpp ]
|
: [ run bind_test.cpp ]
|
||||||
|
[ run bind_dm_test.cpp ]
|
||||||
[ run bind_eq_test.cpp ]
|
[ run bind_eq_test.cpp ]
|
||||||
[ run bind_const_test.cpp ]
|
[ run bind_const_test.cpp ]
|
||||||
[ run bind_cv_test.cpp ]
|
[ run bind_cv_test.cpp ]
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# Boost.Bind Library test Jamfile
|
# Boost.Bind Library test Jamfile
|
||||||
#
|
#
|
||||||
# Copyright (c) 2003, 2004 Peter Dimov
|
# Copyright (c) 2003-2005 Peter Dimov
|
||||||
#
|
#
|
||||||
# Permission to copy, use, modify, sell and distribute this software
|
# Permission to copy, use, modify, sell and distribute this software
|
||||||
# is granted provided this copyright notice appears in all copies.
|
# is granted provided this copyright notice appears in all copies.
|
||||||
@@ -12,6 +12,7 @@ import testing ;
|
|||||||
|
|
||||||
test-suite "bind"
|
test-suite "bind"
|
||||||
: [ run bind_test.cpp ]
|
: [ run bind_test.cpp ]
|
||||||
|
[ run bind_dm_test.cpp ]
|
||||||
[ run bind_eq_test.cpp ]
|
[ run bind_eq_test.cpp ]
|
||||||
[ run bind_const_test.cpp ]
|
[ run bind_const_test.cpp ]
|
||||||
[ run bind_cv_test.cpp ]
|
[ run bind_cv_test.cpp ]
|
||||||
|
73
test/bind_dm_test.cpp
Normal file
73
test/bind_dm_test.cpp
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
#include <boost/config.hpp>
|
||||||
|
|
||||||
|
#if defined(BOOST_MSVC)
|
||||||
|
#pragma warning(disable: 4786) // identifier truncated in debug info
|
||||||
|
#pragma warning(disable: 4710) // function not inlined
|
||||||
|
#pragma warning(disable: 4711) // function selected for automatic inline expansion
|
||||||
|
#pragma warning(disable: 4514) // unreferenced inline removed
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// bind_dm_test.cpp - data members
|
||||||
|
//
|
||||||
|
// Copyright (c) 2005 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>
|
||||||
|
|
||||||
|
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
|
||||||
|
#pragma warning(push, 3)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
|
||||||
|
#pragma warning(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/detail/lightweight_test.hpp>
|
||||||
|
|
||||||
|
struct X
|
||||||
|
{
|
||||||
|
int m;
|
||||||
|
};
|
||||||
|
|
||||||
|
X f( int v )
|
||||||
|
{
|
||||||
|
X r = { v };
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
X x = { 17041 };
|
||||||
|
X * px = &x;
|
||||||
|
|
||||||
|
BOOST_TEST( boost::bind( &X::m, _1 )( x ) == 17041 );
|
||||||
|
BOOST_TEST( boost::bind( &X::m, _1 )( px ) == 17041 );
|
||||||
|
|
||||||
|
BOOST_TEST( boost::bind( &X::m, x )() == 17041 );
|
||||||
|
BOOST_TEST( boost::bind( &X::m, px )() == 17041 );
|
||||||
|
BOOST_TEST( boost::bind( &X::m, boost::ref(x) )() == 17041 );
|
||||||
|
|
||||||
|
|
||||||
|
X const cx = x;
|
||||||
|
X const * pcx = &cx;
|
||||||
|
|
||||||
|
BOOST_TEST( boost::bind( &X::m, _1 )( cx ) == 17041 );
|
||||||
|
BOOST_TEST( boost::bind( &X::m, _1 )( pcx ) == 17041 );
|
||||||
|
|
||||||
|
BOOST_TEST( boost::bind( &X::m, cx )() == 17041 );
|
||||||
|
BOOST_TEST( boost::bind( &X::m, pcx )() == 17041 );
|
||||||
|
BOOST_TEST( boost::bind( &X::m, boost::ref(cx) )() == 17041 );
|
||||||
|
|
||||||
|
int const v = 42;
|
||||||
|
|
||||||
|
BOOST_TEST( boost::bind( &X::m, boost::bind( f, _1 ) )( v ) == v );
|
||||||
|
|
||||||
|
return boost::report_errors();
|
||||||
|
}
|
@@ -390,7 +390,7 @@ void member_function_test()
|
|||||||
bind(&X::g8, x, 1, 2, 3, 4, 5, 6, 7, 8)();
|
bind(&X::g8, x, 1, 2, 3, 4, 5, 6, 7, 8)();
|
||||||
bind(&X::g8, ref(x), 1, 2, 3, 4, 5, 6, 7, 8)();
|
bind(&X::g8, ref(x), 1, 2, 3, 4, 5, 6, 7, 8)();
|
||||||
|
|
||||||
BOOST_TEST( bind(&X::hash, _1)(x) == 23558 );
|
BOOST_TEST( x.hash == 23558 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void member_function_void_test()
|
void member_function_void_test()
|
||||||
@@ -480,7 +480,7 @@ void member_function_void_test()
|
|||||||
bind(&V::g8, v, 1, 2, 3, 4, 5, 6, 7, 8)();
|
bind(&V::g8, v, 1, 2, 3, 4, 5, 6, 7, 8)();
|
||||||
bind(&V::g8, ref(v), 1, 2, 3, 4, 5, 6, 7, 8)();
|
bind(&V::g8, ref(v), 1, 2, 3, 4, 5, 6, 7, 8)();
|
||||||
|
|
||||||
BOOST_TEST( bind(&V::hash, _1)(v) == 23558 );
|
BOOST_TEST( v.hash == 23558 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void nested_bind_test()
|
void nested_bind_test()
|
||||||
|
Reference in New Issue
Block a user