mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-26 07:16:10 +01:00
Factored out mention of "unprintable string" ("{?}")
This commit is contained in:
parent
3e1d3c7271
commit
ea33961b43
@ -134,7 +134,7 @@
|
||||
std::string matcherAsString = ::Catch::Matchers::matcher.toString(); \
|
||||
__catchResult \
|
||||
.setLhs( Catch::toString( arg ) ) \
|
||||
.setRhs( matcherAsString == "{?}" ? #matcher : matcherAsString ) \
|
||||
.setRhs( matcherAsString == Catch::Detail::unprintableString ? #matcher : matcherAsString ) \
|
||||
.setOp( "matches" ) \
|
||||
.setResultType( ::Catch::Matchers::matcher.match( arg ) ); \
|
||||
__catchResult.captureExpression(); \
|
||||
|
@ -29,6 +29,8 @@ std::string toString( T const& value );
|
||||
|
||||
namespace Detail {
|
||||
|
||||
extern std::string unprintableString;
|
||||
|
||||
// SFINAE is currently disabled by default for all compilers.
|
||||
// If the non SFINAE version of IsStreamInsertable is ambiguous for you
|
||||
// and your compiler supports SFINAE, try #defining CATCH_CONFIG_SFINAE
|
||||
@ -71,11 +73,11 @@ namespace Detail {
|
||||
|
||||
#if defined(CATCH_CPP11_OR_GREATER)
|
||||
template<typename T,
|
||||
bool IsEmum = std::is_enum<T>::value
|
||||
bool IsEnum = std::is_enum<T>::value
|
||||
>
|
||||
struct EnumStringMaker
|
||||
{
|
||||
static std::string convert( T const& ) { return "{?}"; }
|
||||
static std::string convert( T const& ) { return unprintableString; }
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
@ -99,7 +101,7 @@ namespace Detail {
|
||||
}
|
||||
#else
|
||||
template<typename T>
|
||||
static std::string convert( T const& ) { return "{?}"; }
|
||||
static std::string convert( T const& ) { return unprintableString; }
|
||||
#endif
|
||||
};
|
||||
|
||||
@ -152,12 +154,17 @@ namespace Detail {
|
||||
std::string rangeToString( InputIterator first, InputIterator last );
|
||||
}
|
||||
|
||||
//template<typename T, typename Allocator>
|
||||
//struct StringMaker<std::vector<T, Allocator> > {
|
||||
// static std::string convert( std::vector<T,Allocator> const& v ) {
|
||||
// return Detail::rangeToString( v.begin(), v.end() );
|
||||
// }
|
||||
//};
|
||||
|
||||
template<typename T, typename Allocator>
|
||||
struct StringMaker<std::vector<T, Allocator> > {
|
||||
static std::string convert( std::vector<T,Allocator> const& v ) {
|
||||
return Detail::rangeToString( v.begin(), v.end() );
|
||||
}
|
||||
};
|
||||
std::string toString( std::vector<T,Allocator> const& v ) {
|
||||
return Detail::rangeToString( v.begin(), v.end() );
|
||||
}
|
||||
|
||||
namespace Detail {
|
||||
template<typename T>
|
||||
|
@ -15,6 +15,8 @@ namespace Catch {
|
||||
|
||||
namespace Detail {
|
||||
|
||||
std::string unprintableString = "{?}";
|
||||
|
||||
namespace {
|
||||
struct Endianness {
|
||||
enum Arch { Big, Little };
|
||||
|
Loading…
Reference in New Issue
Block a user