From 7b0a84a048e5e0b84a2e3794e3d27a32aaf89803 Mon Sep 17 00:00:00 2001 From: Ben Arnold Date: Thu, 14 Aug 2014 12:28:23 +0100 Subject: [PATCH 1/2] toString handles wchar_t raw strings --- include/internal/catch_tostring.h | 2 ++ include/internal/catch_tostring.hpp | 10 ++++++++++ projects/SelfTest/MiscTests.cpp | 24 ++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/include/internal/catch_tostring.h b/include/internal/catch_tostring.h index 4b468834..e8e38296 100644 --- a/include/internal/catch_tostring.h +++ b/include/internal/catch_tostring.h @@ -154,6 +154,8 @@ std::string toString( std::string const& value ); std::string toString( std::wstring const& value ); std::string toString( const char* const value ); std::string toString( char* const value ); +std::string toString( const wchar_t* const value ); +std::string toString( wchar_t* const value ); std::string toString( int value ); std::string toString( unsigned long value ); std::string toString( unsigned int value ); diff --git a/include/internal/catch_tostring.hpp b/include/internal/catch_tostring.hpp index 825ceb55..f9369f1e 100644 --- a/include/internal/catch_tostring.hpp +++ b/include/internal/catch_tostring.hpp @@ -84,6 +84,16 @@ std::string toString( char* const value ) { return Catch::toString( static_cast( value ) ); } +std::string toString( const wchar_t* const value ) +{ + return value ? Catch::toString( std::wstring(value) ) : std::string( "{null string}" ); +} + +std::string toString( wchar_t* const value ) +{ + return Catch::toString( static_cast( value ) ); +} + std::string toString( int value ) { std::ostringstream oss; oss << value; diff --git a/projects/SelfTest/MiscTests.cpp b/projects/SelfTest/MiscTests.cpp index ad572ee2..32711555 100644 --- a/projects/SelfTest/MiscTests.cpp +++ b/projects/SelfTest/MiscTests.cpp @@ -356,3 +356,27 @@ TEST_CASE( "Tabs and newlines show in output", "[.][whitespace][failing]" ) { CHECK( s1 == s2 ); } + +TEST_CASE( "toString on const wchar_t const pointer returns the string contents", "[toString]" ) { + const wchar_t * const s = L"wide load"; + auto result = Catch::toString( s ); + CHECK( result == "\"wide load\"" ); +} + +TEST_CASE( "toString on const wchar_t pointer returns the string contents", "[toString]" ) { + const wchar_t * s = L"wide load"; + auto result = Catch::toString( s ); + CHECK( result == "\"wide load\"" ); +} + +TEST_CASE( "toString on wchar_t const pointer returns the string contents", "[toString]" ) { + wchar_t * const s = L"wide load"; + auto result = Catch::toString( s ); + CHECK( result == "\"wide load\"" ); +} + +TEST_CASE( "toString on wchar_t returns the string contents", "[toString]" ) { + wchar_t * s = L"wide load"; + auto result = Catch::toString( s ); + CHECK( result == "\"wide load\"" ); +} \ No newline at end of file From c7cf0a9f8b4a622ad254cb7f0debbcceab53bb4c Mon Sep 17 00:00:00 2001 From: Ben Arnold Date: Thu, 14 Aug 2014 12:53:21 +0100 Subject: [PATCH 2/2] Catch's Travis builds are using gcc that doesn't like the auto keyword --- projects/SelfTest/MiscTests.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/SelfTest/MiscTests.cpp b/projects/SelfTest/MiscTests.cpp index 32711555..e425b64a 100644 --- a/projects/SelfTest/MiscTests.cpp +++ b/projects/SelfTest/MiscTests.cpp @@ -359,24 +359,24 @@ TEST_CASE( "Tabs and newlines show in output", "[.][whitespace][failing]" ) { TEST_CASE( "toString on const wchar_t const pointer returns the string contents", "[toString]" ) { const wchar_t * const s = L"wide load"; - auto result = Catch::toString( s ); + std::string result = Catch::toString( s ); CHECK( result == "\"wide load\"" ); } TEST_CASE( "toString on const wchar_t pointer returns the string contents", "[toString]" ) { const wchar_t * s = L"wide load"; - auto result = Catch::toString( s ); + std::string result = Catch::toString( s ); CHECK( result == "\"wide load\"" ); } TEST_CASE( "toString on wchar_t const pointer returns the string contents", "[toString]" ) { wchar_t * const s = L"wide load"; - auto result = Catch::toString( s ); + std::string result = Catch::toString( s ); CHECK( result == "\"wide load\"" ); } TEST_CASE( "toString on wchar_t returns the string contents", "[toString]" ) { wchar_t * s = L"wide load"; - auto result = Catch::toString( s ); + std::string result = Catch::toString( s ); CHECK( result == "\"wide load\"" ); } \ No newline at end of file