Fix bug when removing test case keys
[anna.git] / source / testing / TestManager.cpp
index b83f8d4..beb0d93 100644 (file)
@@ -320,13 +320,33 @@ bool TestManager::clearTestCase(std::string &result, unsigned int id) {
 
   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;
+  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) {