mirror of
https://github.com/mat007/turtle.git
synced 2026-06-22 12:13:43 +00:00
Changed char* constraint behaviour to be comparable to another char*
git-svn-id: https://svn.code.sf.net/p/turtle/code/trunk@550 860be788-9bd5-4423-9f1e-828f051e677b
This commit is contained in:
parent
b323536096
commit
0841b2fd16
2 changed files with 66 additions and 0 deletions
|
|
@ -30,3 +30,48 @@ BOOST_AUTO_TEST_CASE( ref_to_int_and_int_can_be_compared )
|
||||||
BOOST_CHECK( check( 3, boost::cref( 3 ) ) );
|
BOOST_CHECK( check( 3, boost::cref( 3 ) ) );
|
||||||
BOOST_CHECK( ! check( 4, boost::cref( 3 ) ) );
|
BOOST_CHECK( ! check( 4, boost::cref( 3 ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
struct fixture
|
||||||
|
{
|
||||||
|
fixture()
|
||||||
|
: text( "same text" )
|
||||||
|
, actual( text.c_str() )
|
||||||
|
{
|
||||||
|
const char* static_string = "same text";
|
||||||
|
BOOST_REQUIRE( actual != static_string );
|
||||||
|
BOOST_REQUIRE( actual == std::string( static_string ) );
|
||||||
|
}
|
||||||
|
std::string text;
|
||||||
|
const char* actual;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_FIXTURE_TEST_CASE( const_char_pointer_and_const_char_pointer_can_be_compared, fixture )
|
||||||
|
{
|
||||||
|
const char* expected = "same text";
|
||||||
|
BOOST_CHECK( check( expected, actual ) );
|
||||||
|
const char* unexpected = "different text";
|
||||||
|
BOOST_CHECK( ! check( actual, unexpected ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_FIXTURE_TEST_CASE( const_char_pointer_and_string_literal_can_be_compared, fixture )
|
||||||
|
{
|
||||||
|
BOOST_CHECK( check( "same text", actual ) );
|
||||||
|
BOOST_CHECK( ! check( "different text", actual ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_FIXTURE_TEST_CASE( const_char_pointer_and_const_char_array_can_be_compared, fixture )
|
||||||
|
{
|
||||||
|
const char expected[10] = "same text";
|
||||||
|
BOOST_CHECK( check( expected, actual ) );
|
||||||
|
const char unexpected[15] = "different text";
|
||||||
|
BOOST_CHECK( ! check( unexpected, actual ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_FIXTURE_TEST_CASE( const_char_pointer_and_std_string_can_be_compared, fixture )
|
||||||
|
{
|
||||||
|
BOOST_CHECK( check( std::string( "same text" ), actual ) );
|
||||||
|
BOOST_CHECK( ! check( std::string( "different text" ), actual ) );
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
#include <boost/utility/enable_if.hpp>
|
#include <boost/utility/enable_if.hpp>
|
||||||
#include <boost/noncopyable.hpp>
|
#include <boost/noncopyable.hpp>
|
||||||
#include <boost/ref.hpp>
|
#include <boost/ref.hpp>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
namespace mock
|
namespace mock
|
||||||
{
|
{
|
||||||
|
|
@ -57,6 +58,26 @@ namespace detail
|
||||||
Expected expected_;
|
Expected expected_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<>
|
||||||
|
class check< const char*, const char* > : public check_base< const char* >
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit check( const char* expected )
|
||||||
|
: expected_( expected )
|
||||||
|
{}
|
||||||
|
virtual bool operator()( const char* actual )
|
||||||
|
{
|
||||||
|
return std::strcmp( actual, expected_ ) == 0;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
virtual void serialize( std::ostream& s ) const
|
||||||
|
{
|
||||||
|
s << mock::format( expected_ );
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
const char* expected_;
|
||||||
|
};
|
||||||
|
|
||||||
template< typename Actual, typename Constraint >
|
template< typename Actual, typename Constraint >
|
||||||
class check< Actual, mock::constraint< Constraint > >
|
class check< Actual, mock::constraint< Constraint > >
|
||||||
: public check_base< Actual >
|
: public check_base< Actual >
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue