X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Ftesting%2FTestManager.cpp;h=beb0d9398895ee05844e96723ed5285a77671717;hb=4275d46f5d3c3a150ced258ae20c985520f6477a;hp=e90d20d35d69af67911503680e5660658042b669;hpb=cef452116c2966d7eaa65ff31ee7613bf3ae1b93;p=anna.git diff --git a/source/testing/TestManager.cpp b/source/testing/TestManager.cpp index e90d20d..beb0d93 100644 --- a/source/testing/TestManager.cpp +++ b/source/testing/TestManager.cpp @@ -299,6 +299,56 @@ TestCase *TestManager::getTestCase(unsigned int id, const std::string &descripti return result; } +bool TestManager::clearTestCase(std::string &result, unsigned int id) { + result = ""; + + if (!tests()) { + result = "There are not programmed test cases to be removed"; + return false; + } + + test_pool_it it = ((id != -1) ? a_testPool.find(id) : a_currentTestIt); + if (it == a_testPool.end()) { + result = "Test case id provided not found"; + return false; + } + + if (!it->second->safeToClear()) { + result = "Test case id provided has running-thread steps. Check for stuck external procedures or try later."; + return false; + } + + a_testPool.erase(it); + + result = "Provided test case has been dropped"; + bool something_removed = false; + + auto key1_it = a_key1TestCaseMap.find(it->second->getKey1()); + if (key1_it != a_key1TestCaseMap.end()) { + a_key1TestCaseMap.erase(key1_it); + result += " | Removed key1 = "; + result += it->second->getKey1(); + something_removed = true; + } + auto key2_it = a_key2TestCaseMap.find(it->second->getKey2()); + if (key2_it != a_key2TestCaseMap.end()) { + a_key2TestCaseMap.erase(key2_it); + result += " | Removed key2 = "; + result += it->second->getKey2(); + something_removed = true; + } + + if (something_removed) return true; + + result = "Provided test case has been dropped, but key1 = '"; + result += it->second->getKey1(); + result += "' was not found, and also key2 = '"; + result += it->second->getKey2(); + result += "' was not found"; + + return false; +} + bool TestManager::clearPool(std::string &result) { result = "";