mirror of
https://github.com/catchorg/Catch2.git
synced 2025-05-28 15:39:27 +00:00
Factored toString overloads into their own file
This commit is contained in:
parent
40b161adea
commit
81a122e66a
3 changed files with 125 additions and 102 deletions
|
@ -12,6 +12,7 @@
|
|||
#ifndef TWOBLUECUBES_CATCH_CAPTURE_HPP_INCLUDED
|
||||
#define TWOBLUECUBES_CATCH_CAPTURE_HPP_INCLUDED
|
||||
|
||||
#include "catch_tostring.hpp"
|
||||
#include "catch_resultinfo.hpp"
|
||||
#include "catch_result_type.h"
|
||||
#include "catch_interfaces_capture.h"
|
||||
|
@ -24,107 +25,6 @@
|
|||
namespace Catch
|
||||
{
|
||||
|
||||
namespace Detail
|
||||
{
|
||||
struct NonStreamable {
|
||||
template<typename T> NonStreamable( const T& ){}
|
||||
};
|
||||
|
||||
// If the type does not have its own << overload for ostream then
|
||||
// this one will be used instead
|
||||
inline std::ostream& operator << ( std::ostream& ss, NonStreamable ){
|
||||
return ss << "{?}";
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline std::string makeString( const T& value ) {
|
||||
std::ostringstream oss;
|
||||
oss << value;
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline std::string makeString( T* p ) {
|
||||
if( !p )
|
||||
return INTERNAL_CATCH_STRINGIFY( NULL );
|
||||
std::ostringstream oss;
|
||||
oss << p;
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline std::string makeString( const T* p ) {
|
||||
if( !p )
|
||||
return INTERNAL_CATCH_STRINGIFY( NULL );
|
||||
std::ostringstream oss;
|
||||
oss << p;
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
}// end namespace Detail
|
||||
|
||||
template<typename T>
|
||||
std::string toString( const T& value ) {
|
||||
return Detail::makeString( value );
|
||||
}
|
||||
|
||||
// Shortcut overloads
|
||||
|
||||
inline std::string toString( const std::string& value ) {
|
||||
return "\"" + value + "\"";
|
||||
}
|
||||
|
||||
inline std::string toString( const std::wstring& value ) {
|
||||
std::ostringstream oss;
|
||||
oss << "\"";
|
||||
for(size_t i = 0; i < value.size(); ++i )
|
||||
oss << static_cast<char>( value[i] <= 0xff ? value[i] : '?');
|
||||
oss << "\"";
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
inline std::string toString( const char* const value ) {
|
||||
return value ? Catch::toString( std::string( value ) ) : std::string( "{null string}" );
|
||||
}
|
||||
|
||||
inline std::string toString( char* const value ) {
|
||||
return Catch::toString( static_cast<const char*>( value ) );
|
||||
}
|
||||
|
||||
inline std::string toString( int value ) {
|
||||
std::ostringstream oss;
|
||||
oss << value;
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
inline std::string toString( unsigned int value ) {
|
||||
std::ostringstream oss;
|
||||
if( value > 8192 )
|
||||
oss << "0x" << std::hex << value;
|
||||
else
|
||||
oss << value;
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
inline std::string toString( unsigned long value ) {
|
||||
std::ostringstream oss;
|
||||
if( value > 8192 )
|
||||
oss << "0x" << std::hex << value;
|
||||
else
|
||||
oss << value;
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
inline std::string toString( const double value ) {
|
||||
std::ostringstream oss;
|
||||
oss << value;
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
inline std::string toString( bool value ) {
|
||||
return value ? "true" : "false";
|
||||
}
|
||||
|
||||
struct TestFailureException{};
|
||||
struct DummyExceptionType_DontUse{};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue