mirror of
https://github.com/unittest-cpp/unittest-cpp
synced 2026-09-26 16:19:30 +03:00
added feature ignore index by parameter name
This commit is contained in:
parent
4543b15231
commit
672b17bddd
2 changed files with 39 additions and 1 deletions
|
|
@ -170,6 +170,7 @@ void ParameterizedManager::clearNonGlobalIgnoredIndexes()
|
|||
|
||||
void ParameterizedManager::updateParameter(TestParameterAbstract* const parameterized)
|
||||
{
|
||||
importIgnoredParameter(parameterized);
|
||||
vector<IgnoredIndex> & ignoredIndexes = _ignoredIndexes[parameterized];
|
||||
bool repeat = true;
|
||||
while (repeat)
|
||||
|
|
@ -232,6 +233,24 @@ vector<ParameterizedManager::IgnoredIndex>::iterator ParameterizedManager::findI
|
|||
}
|
||||
|
||||
|
||||
void ParameterizedManager::importIgnoredParameter(TestParameterAbstract* const parameterized)
|
||||
{
|
||||
IgnoredIndexesByNameMap::iterator it = _pendingIgnoredIndexes.find(parameterized->getName());
|
||||
if (it == _pendingIgnoredIndexes.end())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
vector<IgnoredIndex> & pendingIgnoredIndexes = it->second;
|
||||
while (!pendingIgnoredIndexes.empty())
|
||||
{
|
||||
const IgnoredIndex & iIgnored = pendingIgnoredIndexes.back();
|
||||
ignoreIndex(parameterized, iIgnored.index, iIgnored.global ? GLOBAL : LOCAL);
|
||||
pendingIgnoredIndexes.pop_back();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool ParameterizedManager::isGlobal(IgnoreScope scope)
|
||||
{
|
||||
switch (scope)
|
||||
|
|
@ -280,6 +299,21 @@ ParameterizedManager & ParameterizedManager::ignoreIndex(TestParameterAbstract*
|
|||
}
|
||||
|
||||
|
||||
ParameterizedManager & ParameterizedManager::ignoreIndex(const string & parameterName, size_t index, IgnoreScope scope)
|
||||
{
|
||||
if (parameterName.empty())
|
||||
{
|
||||
throw invalid_argument("Empty parameter name given in ignore index");
|
||||
}
|
||||
|
||||
// Note: do not care about duplicates indexes for now
|
||||
bool global = isGlobal(scope);
|
||||
_pendingIgnoredIndexes[parameterName].push_back(IgnoredIndex(index, global));
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
bool ParameterizedManager::isIndexIgnored(TestParameterAbstract* const parameterized, size_t index)
|
||||
{
|
||||
vector<IgnoredIndex> & ignoredIndexes = _ignoredIndexes[parameterized];
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ namespace UnitTest
|
|||
void endExecute(TestDetails const * const details);
|
||||
void updateParameter(TestParameterAbstract* const parameterized);
|
||||
ParameterizedManager & ignoreIndex(TestParameterAbstract* const parameterized, size_t index, IgnoreScope scope = AUTO);
|
||||
ParameterizedManager & ignoreIndex(const string & parameterName, size_t index, IgnoreScope scope = AUTO);
|
||||
bool isIndexIgnored(TestParameterAbstract* const parameterized, size_t index);
|
||||
const vector<TestParameterAbstract*> & getStack(TestDetails const * const details) const;
|
||||
|
||||
|
|
@ -31,8 +32,9 @@ namespace UnitTest
|
|||
size_t index;
|
||||
bool global;
|
||||
};
|
||||
|
||||
|
||||
typedef unordered_map<TestParameterAbstract*, vector<IgnoredIndex>> IgnoredIndexesMap;
|
||||
typedef unordered_map<string, vector<IgnoredIndex>> IgnoredIndexesByNameMap;
|
||||
|
||||
ParameterizedManager();
|
||||
virtual ~ParameterizedManager();
|
||||
|
|
@ -42,12 +44,14 @@ namespace UnitTest
|
|||
bool hasMoreIndexes(TestParameterAbstract* const parameterized);
|
||||
bool isGlobal(IgnoreScope scope);
|
||||
vector<IgnoredIndex>::iterator findIgnored(vector<IgnoredIndex> & ignoredIndexes, size_t index);
|
||||
void importIgnoredParameter(TestParameterAbstract* const parameterized);
|
||||
void clearNonGlobalIgnoredIndexes();
|
||||
|
||||
TestListNode* _currentTest;
|
||||
TestListNode* _nextTestBackup;
|
||||
vector<TestParameterAbstract*> _stack;
|
||||
IgnoredIndexesMap _ignoredIndexes;
|
||||
IgnoredIndexesByNameMap _pendingIgnoredIndexes;
|
||||
volatile bool _iterationDone;
|
||||
volatile bool _executing;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue