Example #1
0
 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)
Example #2
0
 def test_size(self):
     hashtable = HashTable(200)
     hashtable.insert("test1")
     hashtable.insert("test2")
     hashtable.insert("test3")
     hashtable.delete("test1")
     self.assertEqual(hashtable.getSize(), 2)
Example #3
0
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)}"
        )
Example #4
0
 def test_find(self):
     hashtable = HashTable(200)
     hashtable.insert("Ścieżka")
     self.assertEqual(hashtable.find("Ścieżka"), 157)
Example #5
0
 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)
Example #6
0
 def test_powerMod(self):
     self.assertEqual(HashTable(200).powerMod(1243, 456, 200), 1 )
Example #7
0
 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)
Example #8
0
 def test_cant_find(self):
     hashtable = HashTable(200)
     self.assertEqual(hashtable.find("test"), -1)
Example #9
0
 def test_delete(self):
     hashtable= HashTable(200)
     hashtable.insert("test")
     hashtable.delete("test")
     self.assertEqual("test" not in hashtable.array, True)
Example #10
0
 def test_insert(self):
     hashtable = HashTable(200)
     hashtable.insert("test")
     self.assertEqual("test" in hashtable.array, True)