mirror of
https://github.com/unittest-cpp/unittest-cpp
synced 2026-09-26 16:19:30 +03:00
simplification
This commit is contained in:
parent
58d402affd
commit
119c7e23a9
2 changed files with 11 additions and 21 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -24,18 +24,11 @@ namespace UnitTest
|
|||
const vector<ParameterizedTestAbstract*> & 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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue