diff --git a/catch.hpp b/catch.hpp index 34b57b8e..354888e0 100644 --- a/catch.hpp +++ b/catch.hpp @@ -52,7 +52,7 @@ #define SECTION( name, description ) CATCH_SECTION( name, description ) #define TEST_CASE( name, description ) INTERNAL_CATCH_TESTCASE( name, description ) -#define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE( "anon", "Anonymous test case" ) +#define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE( "", "Anonymous test case" ) #define METHOD_AS_TEST_CASE( method, name, description ) CATCH_METHOD_AS_TEST_CASE( method, name, description ) #define REGISTER_REPORTER( name, reporterType ) CATCH_REGISTER_REPORTER( name, reporterType ) diff --git a/internal/catch_test_case_info.hpp b/internal/catch_test_case_info.hpp index cdf8e900..51da0320 100644 --- a/internal/catch_test_case_info.hpp +++ b/internal/catch_test_case_info.hpp @@ -53,6 +53,18 @@ namespace Catch { } + /////////////////////////////////////////////////////////////////////// + TestCaseInfo + ( + const TestCaseInfo& other, + const std::string& name + ) + : m_test( other.m_test->clone() ), + m_name( name ), + m_description( other.m_description ) + { + } + /////////////////////////////////////////////////////////////////////// TestCaseInfo& operator = ( diff --git a/internal/catch_test_case_registry_impl.hpp b/internal/catch_test_case_registry_impl.hpp index 71c65cb8..63686f81 100644 --- a/internal/catch_test_case_registry_impl.hpp +++ b/internal/catch_test_case_registry_impl.hpp @@ -16,15 +16,26 @@ #include #include +#include namespace Catch { class TestRegistry : public ITestCaseRegistry { public: + TestRegistry() + : m_unnamedCount( 0 ) + { + } virtual void registerTest( const TestCaseInfo& testInfo ) { + if( testInfo.getName() == "" ) + { + std::ostringstream oss; + oss << testInfo.getName() << "unnamed/" << ++m_unnamedCount; + return registerTest( TestCaseInfo( testInfo, oss.str() ) ); + } if( m_functions.find( testInfo ) == m_functions.end() ) { m_functions.insert( testInfo ); @@ -41,6 +52,7 @@ namespace Catch std::set m_functions; std::vector m_functionsInOrder; + size_t m_unnamedCount; }; struct FreeFunctionTestCase : ITestCase