1
0
forked from boostorg/bind

bind_dm_test.cpp added.

[SVN r27629]
This commit is contained in:
Peter Dimov
2005-03-13 15:34:55 +00:00
parent ccd0394b86
commit 28cb8f8206
4 changed files with 79 additions and 4 deletions

View File

@@ -1,6 +1,6 @@
# 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
# is granted provided this copyright notice appears in all copies.
@@ -18,6 +18,7 @@ DEPENDS all : bind ;
{
test-suite "bind"
: [ run bind_test.cpp ]
[ run bind_dm_test.cpp ]
[ run bind_eq_test.cpp ]
[ run bind_const_test.cpp ]
[ run bind_cv_test.cpp ]

View File

@@ -1,6 +1,6 @@
# 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
# is granted provided this copyright notice appears in all copies.
@@ -12,6 +12,7 @@ import testing ;
test-suite "bind"
: [ run bind_test.cpp ]
[ run bind_dm_test.cpp ]
[ run bind_eq_test.cpp ]
[ run bind_const_test.cpp ]
[ run bind_cv_test.cpp ]

73
test/bind_dm_test.cpp Normal file
View 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();
}

View File

@@ -390,7 +390,7 @@ void member_function_test()
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)();
BOOST_TEST( bind(&X::hash, _1)(x) == 23558 );
BOOST_TEST( x.hash == 23558 );
}
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, 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()