int Statistics::memory(AbstractHash **abh) { if (dynamic_cast<ListHash*>((*abh)) != NULL) { int value = 0; ListHash *lh = dynamic_cast<ListHash*>((*abh)); for (int i = 0; i < lh->getSize(); i++) { ListElem *curr = lh->getList()[i].getHead(); ListElem *tail = lh->getList()[i].getTail(); while (*curr != *tail) { value += curr->str.capacity(); curr = curr->next; } } return (value + sizeof(int)); } else if (dynamic_cast<ArrayHash*>((*abh)) != NULL) { int value = 0; ArrayHash *ah = dynamic_cast<ArrayHash*>((*abh)); for (int i = 0; i < ah->getSize(); i++) value += ah->getStr()[i].capacity(); return (sizeof(int) + value); } else std::cout << "ERROR WHILE TESTING." << std::endl; }
int main() { ArrayHash test; std::cout << test.getHash({"CBA", "DDD"}) << std::endl; // should return 21 std::cout << test.getHash({"Z"}) << std::endl; // 25 std::cout << test.getHash({"ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"}) << std::endl; // 4290 return 0; }
int main() { vector<string> coll; coll.push_back("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); coll.push_back("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); coll.push_back("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); coll.push_back("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); coll.push_back("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); coll.push_back("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); ArrayHash test; cout << test.getHash(coll) << endl; return EXIT_SUCCESS; }
double Statistics::effic(AbstractHash **abh) { if (dynamic_cast<ListHash*>((*abh)) != NULL) return 100; else if (dynamic_cast<ArrayHash*>((*abh)) != NULL) { ArrayHash *ah = dynamic_cast<ArrayHash*>((*abh)); int num = 0; for (int i = 0; i < ah->getSize(); i++) if (ah->getStr()[i].length() != 0) num++; return ((num * 100) / (double)ah->getSize()); } else std::cout << "ERROR WHILE TESTING." << std::endl; }
bool do_test(vector<string> input, int __expected) { time_t startClock = clock(); ArrayHash *instance = new ArrayHash(); int __result = instance->getHash(input); double elapsed = (double)(clock() - startClock) / CLOCKS_PER_SEC; delete instance; if (__result == __expected) { cout << "PASSED!" << " (" << elapsed << " seconds)" << endl; return true; } else { cout << "FAILED!" << " (" << elapsed << " seconds)" << endl; cout << " Expected: " << to_string(__expected) << endl; cout << " Received: " << to_string(__result) << endl; return false; } }
// BEGIN KAWIGIEDIT TESTING // Generated by KawigiEdit 2.1.4 (beta) modified by pivanof bool KawigiEdit_RunTest(int testNum, vector <string> p0, bool hasAnswer, int p1) { cout << "Test " << testNum << ": [" << "{"; for (int i = 0; int(p0.size()) > i; ++i) { if (i > 0) { cout << ","; } cout << "\"" << p0[i] << "\""; } cout << "}"; cout << "]" << endl; ArrayHash *obj; int answer; obj = new ArrayHash(); clock_t startTime = clock(); answer = obj->getHash(p0); clock_t endTime = clock(); delete obj; bool res; res = true; cout << "Time: " << double(endTime - startTime) / CLOCKS_PER_SEC << " seconds" << endl; if (hasAnswer) { cout << "Desired answer:" << endl; cout << "\t" << p1 << endl; } cout << "Your answer:" << endl; cout << "\t" << answer << endl; if (hasAnswer) { res = answer == p1; } if (!res) { cout << "DOESN'T MATCH!!!!" << endl; } else if (double(endTime - startTime) / CLOCKS_PER_SEC >= 2) { cout << "FAIL the timeout" << endl; res = false; } else if (hasAnswer) { cout << "Match :-)" << endl; } else { cout << "OK, but is it right?" << endl; } cout << "" << endl; return res; }