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 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
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
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"))
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"))