def test_find_after_collision_and_deletetion(self): hashtable = HashTable(3) #hashvalue(test) = hashvalue(rafal) = 1 hashtable.insert("test") hashtable.insert("rafal") hashtable.delete("test") self.assertEqual(hashtable.find("rafal"), 2)
def test_size(self): hashtable = HashTable(200) hashtable.insert("test1") hashtable.insert("test2") hashtable.insert("test3") hashtable.delete("test1") self.assertEqual(hashtable.getSize(), 2)
def main(): parser = argparse.ArgumentParser( description="Program obslugujacy tablice mieszajaca") group = parser.add_argument_group() parser.add_argument("size", type=int, help="Rozmiar tablicy mieszajace") parser.add_argument("-i", "--input", action="store_true", help="Program czyta dane z wejscia standardowego") group.add_argument("-g", "--generator", type=str, help="Program używa generatora w celu uzyskania danych") parser.add_argument( "-s", "--statistic", type=str, help="Program używa generatora oraz prowadzi statystyke") parser.add_argument( "-e", "--enumeration", type=str, help="Program przeprowadza analize dla enumeracji tablicy") parser.add_argument( "-n", "--nsearch", type=str, help="Program przeprowadza analize dla n wyszukan w tablicy") args = parser.parse_args() hashtable = HashTable(args.size) if args.input: print("add, delete, find, getall, exit") while (True): g = input("podaj operacje : ") try: operation = g.split()[0] argument = g.split()[1] except IndexError: operation = g if operation == "add": hashtable.insert(argument) elif operation == "delete": hashtable.delete(argument) elif operation == "find": print(f"znaleziono na pozycji {hashtable.find(argument)}") elif operation == "getall": print(hashtable.getall()) elif operation == "exit": break if args.generator: if "http" in args.generator: os.system(f"wget -O index.html {args.generator}") adress = "index.html" else: adress = args.generator for word in Generator(adress).generate(): hashtable.insert(word) print(hashtable.getall()) if args.statistic: if "http" in args.statistic: os.system(f"wget -O index.html {args.statistic}") adress = "index.html" else: adress = args.statistic totaltime = 0 mintime = float("inf") maxtime = 0 all = Generator(adress).generate() for word in all: start = time.time() hashtable.insert(word) end = time.time() totaltime += (end - start) mintime = min(mintime, end - start) maxtime = max(maxtime, end - start) print( f"{adress} maxtime: {maxtime}, mintime: {mintime}, totaltime: {totaltime}, average: {totaltime/len(all)}, fulfillment: {hashtable.getSize()/hashtable.K}, accepted: {hashtable.getSize()/len(all)}" ) if args.nsearch: if "http" in args.nsearch: os.system(f"wget -O index.html {args.nsearch}") adress = "index.html" else: adress = args.nsearch totaltime = 0 mintime = float("inf") maxtime = 0 all = Generator(adress).generate() for word in all: hashtable.insert(word) for word in all: start = time.time() hashtable.find(word) end = time.time() maxtime = max(end - start, maxtime) mintime = min(end - start, mintime) totaltime += end - start print( f"{adress} : maxtime: {maxtime}, mintime: {mintime}, totaltime: {totaltime}, average: {totaltime / len(all)}, fulfillment: {hashtable.getSize() / hashtable.K}, accepted: {hashtable.getSize() / len(all)}" ) if args.enumeration: if "http" in args.enumeration: os.system(f"wget -O index.html {args.enumeration}") adress = "index.html" else: adress = args.enumeration totaltime = 0 mintime = float("inf") maxtime = 0 all = Generator(adress).generate() for word in all: hashtable.insert(word) hashtable.begin() for i in range(0, hashtable.getSize()): start = time.time() hashtable.getNext() end = time.time() maxtime = max(end - start, maxtime) mintime = min(end - start, mintime) totaltime += end - start print( f"{adress} : maxtime: {maxtime}, mintime: {mintime}, totaltime: {totaltime}, average: {totaltime / len(all)}, fulfillment: {hashtable.getSize() / hashtable.K}, accepted: {hashtable.getSize() / len(all)}" )
def test_find(self): hashtable = HashTable(200) hashtable.insert("Ścieżka") self.assertEqual(hashtable.find("Ścieżka"), 157)
def test_collision(self): hashtable = HashTable(200) hashtable.array[157] = "zajete" hashtable.array[158] = "zajete" hashtable.insert("Ścieżka") self.assertEqual(hashtable.find("Ścieżka"), 161)
def test_powerMod(self): self.assertEqual(HashTable(200).powerMod(1243, 456, 200), 1 )
def test_getHashValue(self): hashtable = HashTable(200) # "Ścieżka = (97 * 380^0 + 107 * 380^1 + 380 * 380^2 + 101 * 380^3 + 105 * 380^4 + 99 * 380^5 + 346 * 380^6) MOD 200 = 157 self.assertEqual(hashtable.getHashValue("Ścieżka"),157)
def test_cant_find(self): hashtable = HashTable(200) self.assertEqual(hashtable.find("test"), -1)
def test_delete(self): hashtable= HashTable(200) hashtable.insert("test") hashtable.delete("test") self.assertEqual("test" not in hashtable.array, True)
def test_insert(self): hashtable = HashTable(200) hashtable.insert("test") self.assertEqual("test" in hashtable.array, True)