From 354b8b802eaac1b3f9e037a06cbffe9d44ad3f45 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Fri, 18 Mar 2005 05:01:49 +0000 Subject: [PATCH] Test use of function_equal [SVN r27733] --- test/contains_test.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/contains_test.cpp b/test/contains_test.cpp index e42cefa..36d97b9 100644 --- a/test/contains_test.cpp +++ b/test/contains_test.cpp @@ -31,6 +31,20 @@ bool operator==(const ReturnInt& x, const ReturnInt& y) bool operator!=(const ReturnInt& x, const ReturnInt& y) { return x.value != y.value; } +struct ReturnIntFE +{ + explicit ReturnIntFE(int value) : value(value) {} + + int operator()() const { return value; } + + int value; +}; + +namespace boost { + bool function_equal(const ReturnIntFE& x, const ReturnIntFE& y) + { return x.value == y.value; } +} + static void target_test() { boost::function0 f; @@ -76,6 +90,18 @@ static void equal_test() BOOST_CHECK(f.contains(ReturnInt(17))); + f = ReturnIntFE(17); + BOOST_CHECK(f != &forty_two); + BOOST_CHECK(f == ReturnIntFE(17)); + BOOST_CHECK(f != ReturnIntFE(16)); +#if !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3) + BOOST_CHECK(&forty_two != f); + BOOST_CHECK(ReturnIntFE(17) == f); + BOOST_CHECK(ReturnIntFE(16) != f); +#endif + + BOOST_CHECK(f.contains(ReturnIntFE(17))); + #if !defined(BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX) boost::function g;