summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/function/test/contains2_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/function/test/contains2_test.cpp')
-rw-r--r--src/boost/libs/function/test/contains2_test.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/boost/libs/function/test/contains2_test.cpp b/src/boost/libs/function/test/contains2_test.cpp
new file mode 100644
index 00000000..9cfa5c34
--- /dev/null
+++ b/src/boost/libs/function/test/contains2_test.cpp
@@ -0,0 +1,88 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2004.
+// Copyright 2005 Peter Dimov
+
+// Use, modification and distribution is subject to
+// 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/function.hpp>
+#include <boost/core/lightweight_test.hpp>
+
+static int forty_two()
+{
+ return 42;
+}
+
+struct Seventeen
+{
+ int operator()() const
+ {
+ return 17;
+ }
+};
+
+bool operator==(const Seventeen&, const Seventeen&)
+{
+ return true;
+}
+
+struct ReturnInt
+{
+ explicit ReturnInt(int value) : value(value)
+ {
+ }
+
+ int operator()() const
+ {
+ return value;
+ }
+
+ int value;
+};
+
+bool operator==(const ReturnInt& x, const ReturnInt& y)
+{
+ return x.value == y.value;
+}
+
+bool operator!=(const ReturnInt& x, const ReturnInt& y)
+{
+ return x.value != y.value;
+}
+
+int main()
+{
+ boost::function0<int> fn;
+
+ fn = &forty_two;
+
+ BOOST_TEST( fn() == 42 );
+
+ BOOST_TEST( fn.contains(&forty_two) );
+ BOOST_TEST( !fn.contains( Seventeen() ) );
+ BOOST_TEST( !fn.contains( ReturnInt(0) ) );
+ BOOST_TEST( !fn.contains( ReturnInt(12) ) );
+
+ fn = Seventeen();
+
+ BOOST_TEST( fn() == 17 );
+
+ BOOST_TEST( !fn.contains( &forty_two ) );
+ BOOST_TEST( fn.contains( Seventeen() ) );
+ BOOST_TEST( !fn.contains( ReturnInt(0) ) );
+ BOOST_TEST( !fn.contains( ReturnInt(12) ) );
+
+ fn = ReturnInt(12);
+
+ BOOST_TEST( fn() == 12 );
+
+ BOOST_TEST( !fn.contains( &forty_two ) );
+ BOOST_TEST( !fn.contains( Seventeen() ) );
+ BOOST_TEST( !fn.contains( ReturnInt(0) ) );
+ BOOST_TEST( fn.contains( ReturnInt(12) ) );
+
+ return boost::report_errors();
+}