From 119c7e23a950cec2787d84f64f53d7d300ad7180 Mon Sep 17 00:00:00 2001 From: Gabriel Schlozer Date: Mon, 20 Jun 2016 16:18:46 +0200 Subject: [PATCH] simplification --- UnitTest++/ParameterizedManager.cpp | 23 ++++++++++------------- UnitTest++/ParameterizedManager.h | 9 +-------- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/UnitTest++/ParameterizedManager.cpp b/UnitTest++/ParameterizedManager.cpp index 04a3cdd..fa0fd83 100644 --- a/UnitTest++/ParameterizedManager.cpp +++ b/UnitTest++/ParameterizedManager.cpp @@ -28,10 +28,9 @@ ParameterizedManager & ParameterizedManager::getInstance() TestListNode* const ParameterizedManager::retrieveTest(TestDetails const * const details) { - //TODO This workaround is a bit too complicated, why not simply add pointer to current test in class CurrentTest ? for (TestListNode* iNode = Test::GetTestList().GetHead(); iNode != nullptr; iNode = iNode->m_next) { - // Note: do not use TestDetails::sameTest here for optimisation reason + // Warning: do not use TestDetails::sameTest here for optimisation reason if (&iNode->m_test->m_details == details) { return iNode; @@ -129,36 +128,34 @@ void ParameterizedManager::updateParameter(ParameterizedTestAbstract* const para void ParameterizedManager::iterate(ParameterizedTestAbstract* const parameterized) { - RegisterThen then = registerParameter(parameterized); - if (then == ParameterizedManager::FIRST) + bool firstIteration = false; + if (registerParameter(parameterized, firstIteration)) { - parameterized->onNewIteration(true); - } - else if (then == ParameterizedManager::ITERATE) - { - parameterized->onNewIteration(false); + parameterized->onNewIteration(firstIteration); } } -ParameterizedManager::RegisterThen ParameterizedManager::registerParameter(ParameterizedTestAbstract* const parameterized) +bool ParameterizedManager::registerParameter(ParameterizedTestAbstract* const parameterized, bool & outFirstIteration) { if (find(_stack.begin(), _stack.end(), parameterized) == _stack.end()) { _iterationDone = true; _currentTest->m_next = _currentTest; // Loop itself _stack.push_back(parameterized); - return RegisterThen::FIRST; + outFirstIteration = true; + return true; } if (!_iterationDone) { if (!_stack.empty() && _stack.back() == parameterized) { _iterationDone = true; - return RegisterThen::ITERATE; + outFirstIteration = false; + return true; } } - return RegisterThen::IDLE; + return false; } diff --git a/UnitTest++/ParameterizedManager.h b/UnitTest++/ParameterizedManager.h index f2bc798..6f19516 100644 --- a/UnitTest++/ParameterizedManager.h +++ b/UnitTest++/ParameterizedManager.h @@ -24,18 +24,11 @@ namespace UnitTest const vector & getStack(TestDetails const * const details) const; private: - enum RegisterThen //TODO Can remove this ? - { - FIRST, - ITERATE, - IDLE - }; - ParameterizedManager(); virtual ~ParameterizedManager(); TestListNode* const retrieveTest(TestDetails const * const details); void iterate(ParameterizedTestAbstract* const parameterized); - RegisterThen registerParameter(ParameterizedTestAbstract* const parameterized); + bool registerParameter(ParameterizedTestAbstract* const parameterized, bool & outFirst); TestListNode* _currentTest; TestListNode* _nextTestBackup;