contains2_test added

[SVN r27722]
This commit is contained in:
Peter Dimov
2005-03-17 12:48:40 +00:00
parent 795964f63d
commit 3b269d5de7
3 changed files with 92 additions and 1 deletions

View File

@ -62,6 +62,7 @@ DEPENDS all : test ;
[ run libs/function/test/function_ref_portable.cpp : : : : ]
[ run libs/function/test/contains_test.cpp : : : : ]
[ run libs/function/test/contains2_test.cpp : : : : ]
;
}

View File

@ -56,6 +56,8 @@ import testing ;
[ run libs/function/test/contains_test.cpp : : : : ]
[ run libs/function/test/contains2_test.cpp : : : : ]
;
}

88
test/contains2_test.cpp Normal file
View File

@ -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/detail/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();
}