From 4a1c4894c7312e33718a43d817260cfb0fa32480 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Thu, 17 Mar 2005 12:09:35 +0000 Subject: [PATCH] bind_function_test added. [SVN r27721] --- test/Jamfile | 1 + test/Jamfile.v2 | 1 + test/bind_dm2_test.cpp | 2 +- test/bind_function_test.cpp | 77 +++++++++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 test/bind_function_test.cpp diff --git a/test/Jamfile b/test/Jamfile index 71d7538..73ec742 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -26,6 +26,7 @@ DEPENDS all : bind ; [ run bind_dm2_test.cpp ] [ run bind_not_test.cpp ] [ run bind_rel_test.cpp ] + [ run bind_function_test.cpp ] [ run mem_fn_test.cpp ] [ run mem_fn_void_test.cpp ] [ run mem_fn_derived_test.cpp ] diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 42cf5cb..9bea1bc 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -20,6 +20,7 @@ test-suite "bind" [ run bind_dm2_test.cpp ] [ run bind_not_test.cpp ] [ run bind_rel_test.cpp ] + [ run bind_function_test.cpp ] [ run mem_fn_test.cpp ] [ run mem_fn_void_test.cpp ] [ run mem_fn_derived_test.cpp ] diff --git a/test/bind_dm2_test.cpp b/test/bind_dm2_test.cpp index fc996c5..4bac5c7 100644 --- a/test/bind_dm2_test.cpp +++ b/test/bind_dm2_test.cpp @@ -8,7 +8,7 @@ #endif // -// bind_dm_test.cpp - data members, advanced uses +// bind_dm2_test.cpp - data members, advanced uses // // Copyright (c) 2005 Peter Dimov // diff --git a/test/bind_function_test.cpp b/test/bind_function_test.cpp new file mode 100644 index 0000000..5ce18c4 --- /dev/null +++ b/test/bind_function_test.cpp @@ -0,0 +1,77 @@ +#include + +#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_function_test.cpp - function<> +// +// 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) +// + +#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300) +#pragma warning(push, 3) +#endif + +#include +#include + +#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300) +#pragma warning(pop) +#endif + +#include +#include + +int f( int x ) +{ + return x; +} + +int g( int x ) +{ + return x + 1; +} + +int main() +{ + boost::function0 fn; + + BOOST_TEST( !fn.contains( boost::bind( f, 1 ) ) ); + BOOST_TEST( !fn.contains( boost::bind( f, 2 ) ) ); + BOOST_TEST( !fn.contains( boost::bind( g, 1 ) ) ); + + fn = boost::bind( f, 1 ); + + BOOST_TEST( fn() == 1 ); + + BOOST_TEST( fn.contains( boost::bind( f, 1 ) ) ); + BOOST_TEST( !fn.contains( boost::bind( f, 2 ) ) ); + BOOST_TEST( !fn.contains( boost::bind( g, 1 ) ) ); + + fn = boost::bind( f, 2 ); + + BOOST_TEST( fn() == 2 ); + + BOOST_TEST( !fn.contains( boost::bind( f, 1 ) ) ); + BOOST_TEST( fn.contains( boost::bind( f, 2 ) ) ); + BOOST_TEST( !fn.contains( boost::bind( g, 1 ) ) ); + + fn = boost::bind( g, 1 ); + + BOOST_TEST( fn() == 2 ); + + BOOST_TEST( !fn.contains( boost::bind( f, 1 ) ) ); + BOOST_TEST( !fn.contains( boost::bind( f, 2 ) ) ); + BOOST_TEST( fn.contains( boost::bind( g, 1 ) ) ); + + return boost::report_errors(); +}