From dd2d98f32dd59917ba393883b7d57e4c2a26b863 Mon Sep 17 00:00:00 2001 From: Gabriel Schlozer Date: Wed, 8 Jun 2016 16:38:13 +0200 Subject: [PATCH] fixed bug --- UnitTest++/ParameterizedManager.cpp | 18 +++++++++++++----- UnitTest++/ParameterizedManager.h | 1 + 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/UnitTest++/ParameterizedManager.cpp b/UnitTest++/ParameterizedManager.cpp index 0e47a6d..64fe6e6 100644 --- a/UnitTest++/ParameterizedManager.cpp +++ b/UnitTest++/ParameterizedManager.cpp @@ -8,7 +8,8 @@ using namespace UnitTest; ParameterizedManager::ParameterizedManager() : _currentTest(nullptr), - _nextTestBackup(nullptr) + _nextTestBackup(nullptr), + _iterationDone(false) { } @@ -61,6 +62,7 @@ void ParameterizedManager::beginExecute(TestDetails const * const details) _currentTest = retrieveTest(details); _nextTestBackup = _currentTest->m_next; _currentTest->m_next = _currentTest; // Loop itself + _iterationDone = false; } @@ -90,20 +92,26 @@ void ParameterizedManager::endExecute(TestDetails const * const details) _currentTest = nullptr; _nextTestBackup = nullptr; } + _iterationDone = false; } ParameterizedManager::RegisterThen ParameterizedManager::registerParameter(ParameterizedTestAbstract* const parameterized) { - if (!_stack.empty() && _stack.back() == parameterized) - { - return RegisterThen::ITERATE; - } if (find(_stack.begin(), _stack.end(), parameterized) == _stack.end()) { + _iterationDone = true; _stack.push_back(parameterized); return RegisterThen::FIRST; } + if (!_iterationDone) + { + if (!_stack.empty() && _stack.back() == parameterized) + { + _iterationDone = true; + return RegisterThen::ITERATE; + } + } return RegisterThen::IDLE; } diff --git a/UnitTest++/ParameterizedManager.h b/UnitTest++/ParameterizedManager.h index 93ae2b7..fffc7e6 100644 --- a/UnitTest++/ParameterizedManager.h +++ b/UnitTest++/ParameterizedManager.h @@ -37,6 +37,7 @@ namespace UnitTest TestListNode* _currentTest; TestListNode* _nextTestBackup; vector _stack; + volatile bool _iterationDone; }; }