diff --git a/Test/TrickyTests.cpp b/Test/TrickyTests.cpp index 08074dd7..b3cfc6f0 100644 --- a/Test/TrickyTests.cpp +++ b/Test/TrickyTests.cpp @@ -40,4 +40,12 @@ TEST_CASE( "succeeding/Tricky/complex lhs", "Where the LHS is not a simple value // This only captures part of the expression, but issues a warning about the rest EXPECT( a == 2 || b == 2 ); +} + +TEST_CASE( "succeeding/Tricky/complex lhs/2", "Where the LHS is not a simple value" ) +{ + int a = 1; + + // This only captures part of the expression, but issues a warning about the rest +// EXPECT( a + 1 == 2); } \ No newline at end of file diff --git a/internal/catch_capture.hpp b/internal/catch_capture.hpp index e7533cac..6e95e3f4 100644 --- a/internal/catch_capture.hpp +++ b/internal/catch_capture.hpp @@ -66,8 +66,7 @@ public: m_expressionIncomplete = true; return *this; } - - + private: friend class ResultBuilder; void setLhs( const std::string& lhs ) diff --git a/internal/catch_testcaseinfo.hpp b/internal/catch_testcaseinfo.hpp index 7a8185ca..62bbeb87 100644 --- a/internal/catch_testcaseinfo.hpp +++ b/internal/catch_testcaseinfo.hpp @@ -48,9 +48,8 @@ namespace Catch TestCaseInfo& operator = ( const TestCaseInfo& other ) { - test = other.test->clone(); - name = other.name; - description = description; + TestCaseInfo temp( other ); + swap( temp ); return *this; } @@ -73,6 +72,13 @@ namespace Catch return description; } + void swap( TestCaseInfo& other ) + { + std::swap( test, other.test ); + name.swap( other.name ); + description.swap( other.description ); + } + private: TestCase* test; std::string name;