+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);
+
+ auto key1_it = a_key1TestCaseMap.find(it->second->getKey());
+ if (key1_it != a_key1TestCaseMap.end()) a_key1TestCaseMap.erase(key1_it);
+ auto key2_it = a_key2TestCaseMap.find(it->second->getKey());
+ if (key2_it != a_key2TestCaseMap.end()) a_key2TestCaseMap.erase(key2_it);
+
+ result = "Provided test case has been dropped";
+ return true;
+}
+