#include "catch.hpp" 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 } }" ); } // More contrivance: A pair of vectors... TEST_CASE( "toString( pair )", "[toString][pair][vector]" ) { typedef std::pair,std::vector > type; int aint[] = { 4, 2, 6 }; std::vector vint( aint, aint+3 ); CHECK( "{ 4, 2, 6 }" == Catch::toString(vint) ); float afloat[] = { 0.4f, 0.2f, 0.7f }; std::vector vfloat( afloat, afloat+3 ); CHECK( "{ 0.4f, 0.2f, 0.7f }" == Catch::toString(vfloat) ); type value( vint, vfloat ); CHECK( "{ { 4, 2, 6 }, { 0.4f, 0.2f, 0.7f } }" == Catch::toString(value) ); }