From d49ddee296f023c4cfcc0856e268775eaa39e821 Mon Sep 17 00:00:00 2001 From: Gabriel Schlozer Date: Tue, 17 May 2016 15:07:03 +0200 Subject: [PATCH] Create anchor with exactly same details than original test for ensure it will pass all test filters the same way as original --- UnitTest++/ParameterizedTest.cpp | 27 ++++++++++++++++++--------- UnitTest++/ParameterizedTest.h | 1 + 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/UnitTest++/ParameterizedTest.cpp b/UnitTest++/ParameterizedTest.cpp index fa28017..c66394a 100644 --- a/UnitTest++/ParameterizedTest.cpp +++ b/UnitTest++/ParameterizedTest.cpp @@ -48,15 +48,6 @@ void ParameterizedTestAbstract::ensureInitialized() { TestListNode* currentTest = retrieveCurrentTest(); - if (_testAnchor == nullptr) - { - _testAnchor = new TestAnchor("ParameterizedTestAnchor", currentTest->m_test->m_details.suiteName, *this); - } - if (_testAnchorNode == nullptr) - { - _testAnchorNode = new TestListNode(_testAnchor); - } - if (_lastTest != currentTest) { _lastTest = currentTest; @@ -110,6 +101,7 @@ void ParameterizedTestAbstract::onNewIteration(bool first) { throw runtime_error("No values for parameterized test"); } + newAnchor(); } else { @@ -134,6 +126,23 @@ void ParameterizedTestAbstract::onNewIteration(bool first) } +void ParameterizedTestAbstract::newAnchor() +{ + if (_testAnchor != nullptr) + { + delete _testAnchor; + } + if (_testAnchorNode != nullptr) + { + delete _testAnchorNode; + } + + // Important: create anchor with exactly same details than original test for ensure it will pass all test filters the same way as original + _testAnchor = new TestAnchor(_lastTest->m_test->m_details.testName, _lastTest->m_test->m_details.suiteName, *this); + _testAnchorNode = new TestListNode(_testAnchor); +} + + ParameterizedTestAbstract::TestAnchor::TestAnchor(char const* testName, char const* suiteName, ParameterizedTestAbstract & pt) : Test(testName, suiteName), _pt(pt) diff --git a/UnitTest++/ParameterizedTest.h b/UnitTest++/ParameterizedTest.h index 238e6dc..6fa4632 100644 --- a/UnitTest++/ParameterizedTest.h +++ b/UnitTest++/ParameterizedTest.h @@ -42,6 +42,7 @@ namespace UnitTest bool hasMoreValues(int advance = 0) const; void onNewIteration(bool first); + void newAnchor(); size_t _iteration; TestListNode* _lastTest;