From be98f6b83acf489daefe604e238e4657940b1e64 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 12 Nov 2016 10:20:42 +0100 Subject: Added Catch testing library (nw) --- 3rdparty/catch/projects/SelfTest/ToStringPair.cpp | 47 +++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 3rdparty/catch/projects/SelfTest/ToStringPair.cpp (limited to '3rdparty/catch/projects/SelfTest/ToStringPair.cpp') diff --git a/3rdparty/catch/projects/SelfTest/ToStringPair.cpp b/3rdparty/catch/projects/SelfTest/ToStringPair.cpp new file mode 100644 index 00000000000..8f51070069b --- /dev/null +++ b/3rdparty/catch/projects/SelfTest/ToStringPair.cpp @@ -0,0 +1,47 @@ +#include "catch.hpp" + +// === Pair === +namespace Catch { + // Note: If we put this in the right place in catch_tostring, then + // we can make it an overload of Catch::toString + template + struct StringMaker > { + static std::string convert( const std::pair& pair ) { + std::ostringstream oss; + oss << "{ " + << toString( pair.first ) + << ", " + << toString( pair.second ) + << " }"; + return oss.str(); + } + }; +} + +TEST_CASE( "std::pair -> toString", "[toString][pair]" ) { + std::pair value( 34, "xyzzy" ); + REQUIRE( Catch::toString( value ) == "{ 34, \"xyzzy\" }" ); +} + +TEST_CASE( "std::pair -> toString", "[toString][pair]" ) { + std::pair value( 34, "xyzzy" ); + REQUIRE( Catch::toString(value) == "{ 34, \"xyzzy\" }" ); +} + +TEST_CASE( "std::vector > -> toString", "[toString][pair]" ) { + std::vector > pr; + pr.push_back( std::make_pair("green", 55 ) ); + REQUIRE( Catch::toString( pr ) == "{ { \"green\", 55 } }" ); +} + +// This is pretty contrived - I figure if this works, anything will... +TEST_CASE( "pair > -> toString", "[toString][pair]" ) { + typedef std::pair left_t; + typedef std::pair right_t; + + left_t left( 42, "Arthur" ); + right_t right( "Ford", 24 ); + + std::pair pair( left, right ); + REQUIRE( Catch::toString( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" ); +} -- cgit v1.2.3-70-g09d2