Beispiel #1
0
 def test_freq_counter(self):
     self.assertRaises(FileNotFoundError, freq_counter, "fake_file.txt")
     al_first = al.ArrayList([None] * 250)
     al.set(al_first, 97, 3)
     al.set(al_first, 98, 2)
     al.set(al_first, 99, 1)
     self.assertEqual(freq_counter("first.txt"), al_first)
Beispiel #2
0
def build_codes(tree, ls=al.ArrayList([None] * 250), acc=""):
    if type(tree) == Leaf:
        al.set(ls, tree.char, acc)
    else:
        build_codes(tree.left, ls, acc + "0")
        build_codes(tree.right, ls, acc + "1")
    return ls
Beispiel #3
0
def freq_counter(input):
    ls = al.ArrayList([None] * 250)
    file = open(input, "r")
    for line in file:
        for char in line:
            al.increment(ls, ord(char))
    file.close()
    return ls
Beispiel #4
0
 def test_build_tree(self):
     self.assertEqual(build_tree(self.huff_list), self.huff_tree)
     self.assertEqual(
         build_tree(al.set(al.set(al.ArrayList([None] * 250), 32, 3), 98,
                           3)), self.tree0)
     self.assertEqual(
         build_tree(freq_counter("first.txt")),
         Node(97, 6, Leaf(97, 3), Node(98, 3, Leaf(99, 1), Leaf(98, 2))))
Beispiel #5
0
 def test_build_codes(self):
     self.assertEqual(
         build_codes(self.huff_tree),
         al.set(
             al.set(
                 al.set(
                     al.set(al.set(al.ArrayList([None] * 250), 32, "00"),
                            98, "01"), 100, "100"), 99, "101"), 97, "11"))
     self.assertEqual(
         build_codes(build_tree(self.huff_list)),
         al.set(
             al.set(
                 al.set(
                     al.set(al.set(al.ArrayList([None] * 250), 32, "00"),
                            98, "01"), 100, "100"), 99, "101"), 97, "11"))
     self.assertEqual(
         build_codes(build_tree(freq_counter("huff_ex.txt"))),
         al.set(
             al.set(
                 al.set(
                     al.set(al.set(al.ArrayList([None] * 250), 32, "00"),
                            98, "01"), 100, "100"), 99, "101"), 97, "11"))
Beispiel #6
0
class TestList(unittest.TestCase):

    huff_list = al.set(
        al.set(
            al.set(al.set(al.set(al.ArrayList([None] * 250), 97, 4), 98, 3),
                   99, 2), 100, 1), 32, 3)
    huff_tree = Node(
        32, 13, Node(32, 6, Leaf(32, 3), Leaf(98, 3)),
        Node(97, 7, Node(99, 3, Leaf(100, 1), Leaf(99, 2)), Leaf(97, 4)))
    tree0 = Node(32, 6, Leaf(32, 3), Leaf(98, 3))
    tree1 = Node(97, 7, Node(99, 3, Leaf(100, 1), Leaf(99, 2)), Leaf(97, 4))

    print(tree0)

    def test_freq_counter(self):
        self.assertRaises(FileNotFoundError, freq_counter, "fake_file.txt")
        al_first = al.ArrayList([None] * 250)
        al.set(al_first, 97, 3)
        al.set(al_first, 98, 2)
        al.set(al_first, 99, 1)
        self.assertEqual(freq_counter("first.txt"), al_first)

    def test_tree_traversal(self):
        self.assertEqual(tree_traversal(self.tree0), " b")
        self.assertEqual(tree_traversal(self.tree1), "dca")
        self.assertEqual(tree_traversal(self.huff_tree), " bdca")

    def test_comes_before(self):
        self.assertEqual(comes_before(self.tree0, self.tree1), True)
        self.assertEqual(comes_before(self.huff_tree, self.tree0), False)
        self.assertEqual(comes_before(Leaf(32, 3), Leaf(98, 3)), True)

    def test_build_sorted_leaves(self):
        self.assertEqual(
            build_sorted_leaves(self.huff_list),
            ll.Pair(
                Leaf(100, 1),
                ll.Pair(
                    Leaf(99, 2),
                    ll.Pair(Leaf(32, 3),
                            ll.Pair(Leaf(98, 3), ll.Pair(Leaf(97, 4)))))))

    def test_build_tree(self):
        self.assertEqual(build_tree(self.huff_list), self.huff_tree)
        self.assertEqual(
            build_tree(al.set(al.set(al.ArrayList([None] * 250), 32, 3), 98,
                              3)), self.tree0)
        self.assertEqual(
            build_tree(freq_counter("first.txt")),
            Node(97, 6, Leaf(97, 3), Node(98, 3, Leaf(99, 1), Leaf(98, 2))))

    def test_build_codes(self):
        self.assertEqual(
            build_codes(self.huff_tree),
            al.set(
                al.set(
                    al.set(
                        al.set(al.set(al.ArrayList([None] * 250), 32, "00"),
                               98, "01"), 100, "100"), 99, "101"), 97, "11"))
        self.assertEqual(
            build_codes(build_tree(self.huff_list)),
            al.set(
                al.set(
                    al.set(
                        al.set(al.set(al.ArrayList([None] * 250), 32, "00"),
                               98, "01"), 100, "100"), 99, "101"), 97, "11"))
        self.assertEqual(
            build_codes(build_tree(freq_counter("huff_ex.txt"))),
            al.set(
                al.set(
                    al.set(
                        al.set(al.set(al.ArrayList([None] * 250), 32, "00"),
                               98, "01"), 100, "100"), 99, "101"), 97, "11"))