class AddToHeadAscListWithSingleValueTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.ol = OrderedList(True)
        self.ol.add(1)

    def test(self):
        self.assertEqual(1, self.ol.len())
        self.assertEqual(1, self.ol.len_reverse())
        self.assertEqual(1, self.ol.head.value)
        self.assertEqual(1, self.ol.tail.value)
        self.assertIsNone(self.ol.head.prev)
        self.assertIsNone(self.ol.head.next)
        self.assertIsNone(self.ol.tail.next)
        self.assertIsNone(self.ol.tail.prev)

        self.ol.add(0)

        self.assertEqual(2, self.ol.len())
        self.assertEqual(2, self.ol.len_reverse())
        self.assertEqual(0, self.ol.head.value)
        self.assertIsNone(self.ol.head.prev)
        self.assertEqual(1, self.ol.head.next.value)
        self.assertEqual(0, self.ol.head.next.prev.value)
        self.assertEqual(1, self.ol.tail.value)
        self.assertEqual(0, self.ol.tail.prev.value)
        self.assertIsNone(self.ol.tail.next)
class AddToHeadAscListWithMultipleValuesTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.ol = OrderedList(True)

        for i in range(1, 6):
            self.ol.add(i)

    def test(self):
        self.assertEqual(5, self.ol.len())
        self.assertEqual(5, self.ol.len_reverse())
        self.assertEqual(1, self.ol.head.value)
        self.assertEqual(5, self.ol.tail.value)
        self.assertIsNone(self.ol.head.prev)
        self.assertIsNone(self.ol.tail.next)

        self.ol.add(0)

        self.assertEqual(6, self.ol.len())
        self.assertEqual(6, self.ol.len_reverse())
        self.assertEqual(0, self.ol.head.value)
        self.assertEqual(5, self.ol.tail.value)
        self.assertIsNone(self.ol.head.prev)
        self.assertIsNone(self.ol.tail.next)
        self.assertEqual(1, self.ol.head.next.value)
        self.assertEqual(0, self.ol.head.next.prev.value)
class AddToEndDescListWithMultipleValuesTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.ol = OrderedList(False)
        for i in range(1, 7):
            self.ol.add(i)

    def test(self):
        self.assertEqual(6, self.ol.len())
        self.assertEqual(6, self.ol.len_reverse())
        self.assertEqual(1, self.ol.tail.value)
        self.assertEqual(2, self.ol.tail.prev.value)
        self.assertEqual(1, self.ol.tail.prev.next.value)

        self.assertIsNone(self.ol.tail.next)

        self.ol.add(0)

        self.assertEqual(7, self.ol.len())
        self.assertEqual(7, self.ol.len_reverse())
        self.assertEqual(0, self.ol.tail.value)
        self.assertEqual(1, self.ol.tail.prev.value)
        self.assertEqual(0, self.ol.tail.prev.next.value)
        self.assertEqual(self.ol.find(0), self.ol.tail)

        self.assertIsNone(self.ol.tail.next)
class AddToEmptyListTestCase(unittest.TestCase):
    def test_asc(self):
        self.ol = OrderedList(True)

        self.assertEqual(0, self.ol.len())
        self.assertEqual(0, self.ol.len_reverse())
        self.assertIsNone(self.ol.head)
        self.assertIsNone(self.ol.tail)

        self.ol.add(1)

        self.assertEqual(1, self.ol.len())
        self.assertEqual(1, self.ol.len_reverse())
        self.assertEqual(1, self.ol.head.value)
        self.assertEqual(1, self.ol.tail.value)
        self.assertEqual(1, self.ol.get_all()[0].value)

    def test_desc(self):
        self.ol = OrderedList(False)

        self.assertEqual(0, self.ol.len())
        self.assertEqual(0, self.ol.len_reverse())
        self.assertIsNone(self.ol.head)
        self.assertIsNone(self.ol.tail)

        self.ol.add(1)

        self.assertEqual(1, self.ol.len())
        self.assertEqual(1, self.ol.len_reverse())
        self.assertEqual(1, self.ol.head.value)
        self.assertEqual(1, self.ol.tail.value)
        self.assertEqual(1, self.ol.get_all()[0].value)
class AddToHeadDescListWithMultipleValuesTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.ol = OrderedList(False)
        for i in range(0, 6):
            self.ol.add(i)

    def test(self):
        self.assertEqual(6, self.ol.len())
        self.assertEqual(6, self.ol.len_reverse())
        self.assertEqual(5, self.ol.head.value)
        self.assertEqual(4, self.ol.head.next.value)
        self.assertEqual(5, self.ol.head.next.prev.value)
        self.assertEqual(0, self.ol.tail.value)
        self.assertEqual(1, self.ol.tail.prev.value)
        self.assertEqual(0, self.ol.tail.prev.next.value)

        self.assertIsNone(self.ol.head.prev)
        self.assertIsNone(self.ol.tail.next)

        self.ol.add(100)

        self.assertEqual(7, self.ol.len())
        self.assertEqual(7, self.ol.len_reverse())
        self.assertEqual(100, self.ol.head.value)
        self.assertEqual(5, self.ol.head.next.value)
        self.assertEqual(100, self.ol.head.next.prev.value)
        self.assertEqual(self.ol.find(100), self.ol.head)

        nodes = []
        for i in self.ol.get_all():
            nodes.append(i.value)

        self.assertListEqual(nodes, [100, 5, 4, 3, 2, 1, 0])
class AddToMiddleAscListTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.ol = OrderedList(True)

        for i in range(0, 6):
            self.ol.add(i)

    def test(self):
        self.assertEqual(6, self.ol.len())
        self.assertEqual(6, self.ol.len_reverse())
        self.assertEqual(0, self.ol.head.value)
        self.assertEqual(5, self.ol.tail.value)
        self.assertIsNone(self.ol.head.prev)
        self.assertIsNone(self.ol.tail.next)
        self.assertEqual(0, self.ol.head.next.prev.value)

        self.ol.add(4)

        nodes = []
        for i in self.ol.get_all():
            nodes.append(i.value)

        self.assertListEqual(nodes, [0, 1, 2, 3, 4, 4, 5])

        self.assertEqual(7, self.ol.len())
        self.assertEqual(7, self.ol.len_reverse())
        self.assertEqual(0, self.ol.head.value)
        self.assertEqual(5, self.ol.tail.value)
        self.assertIsNone(self.ol.head.prev)
        self.assertIsNone(self.ol.tail.next)
class DeleteFromMiddleDescListWithMultipleValuesTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.ol = OrderedList(False)
        for i in range(0, 6):
            self.ol.add(i)

    def test(self):
        self.assertEqual(6, self.ol.len())
        self.assertEqual(6, self.ol.len_reverse())

        nodes = []
        for i in self.ol.get_all():
            nodes.append(i.value)

        self.assertListEqual(nodes, [5, 4, 3, 2, 1, 0])

        self.ol.delete(3)

        self.assertEqual(5, self.ol.len())
        self.assertEqual(5, self.ol.len_reverse())

        nodes = []
        for i in self.ol.get_all():
            nodes.append(i.value)

        self.assertListEqual(nodes, [5, 4, 2, 1, 0])

        node_4 = self.ol.find(4)
        node_2 = self.ol.find(2)

        self.assertEqual(node_2, node_4.next)
        self.assertEqual(node_4, node_2.prev)
class DeleteFromEndDescListWithMultipleValuesTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.ol = OrderedList(False)
        for i in range(0, 6):
            self.ol.add(i)

    def test(self):
        self.assertEqual(6, self.ol.len())
        self.assertEqual(6, self.ol.len_reverse())
        self.assertEqual(0, self.ol.tail.value)
        self.assertEqual(1, self.ol.tail.prev.value)
        self.assertEqual(0, self.ol.tail.prev.next.value)

        self.assertIsNone(self.ol.tail.next)

        self.ol.delete(0)
        self.ol.delete(1)
        self.ol.delete(2)

        self.assertEqual(3, self.ol.len())
        self.assertEqual(3, self.ol.len_reverse())
        self.assertEqual(3, self.ol.tail.value)
        self.assertEqual(4, self.ol.tail.prev.value)
        self.assertEqual(3, self.ol.tail.prev.next.value)

        self.assertIsNone(self.ol.tail.next)

        self.ol.delete(3)
        self.ol.delete(4)
        self.ol.delete(5)

        self.assertEqual(0, self.ol.len())
        self.assertEqual(0, self.ol.len_reverse())
        self.assertIsNone(self.ol.head)
        self.assertIsNone(self.ol.tail)
Ejemplo n.º 9
0
 def test_OrderedList_office_hours(self):
     orderlst = OrderedList()
     orderlst.add(5)
     orderlst.add(3)
     orderlst.add(6)
     orderlst.add(2)
     self.assertEqual(orderlst.pop(), 6)
     self.assertEqual(orderlst.pop(0), 2)
Ejemplo n.º 10
0
 def test_remove(self):
     lst = OrderedList()
     lst.add(1)
     lst.add(3)
     lst.add(2)
     self.assertEqual(lst.remove(1), 0)
     self.assertEqual(lst.remove(3), 1)
     self.assertRaises(ValueError, lst.remove, 3)
Ejemplo n.º 11
0
 def test_5(self):
     ordered_list = OrderedList()
     ordered_list.add(1)
     ordered_list.add(2)
     ordered_list.add(5)
     ordered_list.add(3)
     self.assertEqual(ordered_list.head.val, 1)
     self.assertEqual(ordered_list.tail.val, 5)
     self.assertEqual(ordered_list.size(), 4)
Ejemplo n.º 12
0
 def test_1(self):
     ordered_list = OrderedList()
     self.assertEqual(ordered_list.is_empty(), True)
     ordered_list.add(2)
     self.assertEqual(ordered_list.head.val, 2)
     self.assertEqual(ordered_list.tail.val, 2)
     ordered_list.add(1)
     ordered_list.add(3)
     self.assertEqual(ordered_list.size(), 3)
Ejemplo n.º 13
0
    def test_add_ascending(self):
        ol = OrderedList(asc=True)

        items = [4, 6, 2, 8, 5]

        for item in items:
            ol.add(item)
        items.sort()
        self.assertEqual([node.value for node in ol.get_all()], items)
Ejemplo n.º 14
0
    def test_len(self):
        ol = OrderedList(asc=True)

        items = [4, 6, 2, 8, 5]

        for item in items:
            ol.add(item)

        self.assertEqual(ol.len(), len(items))
Ejemplo n.º 15
0
 def test_3(self):
     ordered_list = OrderedList()
     self.assertEqual(ordered_list.is_empty(), True)
     ordered_list.add(2)
     self.assertEqual(ordered_list.head.val, 2)
     self.assertEqual(ordered_list.tail.val, 2)
     ordered_list.add(1)
     ordered_list.add(3)
     self.assertEqual(ordered_list.search_forward(3), True)
     self.assertEqual(ordered_list.search_backward(3), True)
Ejemplo n.º 16
0
    def test_find_by_value_descending(self):
        ol = OrderedList(asc=True)

        items = [4, 6, 2, 8, 5]

        for item in items:
            ol.add(item)

        node = ol.find(4)

        self.assertEqual(node.value, 4)
Ejemplo n.º 17
0
 def test_adding(self):
     l = OrderedList()
     self.assertEqual(l.size(), 0)
     self.assertTrue(l.is_empty())
     l.add(1)
     self.assertEqual(l.size(), 1)
     self.assertEqual(l.head.value, 1)
     self.assertFalse(l.is_empty())
     l.add(2)
     self.assertEqual(l.size(), 2)
     self.assertEqual(l.head.value, 1)
Ejemplo n.º 18
0
 def test_2(self):
     ordered_list = OrderedList()
     ordered_list.add(2)
     self.assertEqual(ordered_list.head.val, 2)
     self.assertEqual(ordered_list.tail.val, 2)
     ordered_list.add(1)
     ordered_list.add(3)
     self.assertEqual(ordered_list.index(1), 0)
     self.assertEqual(ordered_list.index(2), 1)
     self.assertEqual(ordered_list.index(3), 2)
     self.assertRaises(LookupError, ordered_list.index, 4)
Ejemplo n.º 19
0
 def test_4(self):
     ordered_list = OrderedList()
     self.assertEqual(ordered_list.is_empty(), True)
     ordered_list.add(2)
     ordered_list.add(1)
     ordered_list.add(3)
     self.assertEqual(ordered_list.head.val, 1)
     self.assertEqual(ordered_list.tail.val, 3)
     self.assertRaises(ValueError, ordered_list.remove, 4)
     self.assertEqual(ordered_list.remove(2), 1)
     self.assertEqual(ordered_list.pop(0), 1)
     self.assertEqual(ordered_list.pop(), 3)
Ejemplo n.º 20
0
    def test_clean(self):
        ol = OrderedList(asc=True)

        items = [4, 6, 2, 8, 5]

        for item in items:
            ol.add(item)

        ol.clean(asc=True)

        self.assertEqual(ol.head, None)
        self.assertEqual(ol.tail, None)
Ejemplo n.º 21
0
    def test_delete_ascending_end(self):
        ol = OrderedList(asc=True)

        items = [4, 6, 2, 8, 5]

        for item in items:
            ol.add(item)

        items.sort()
        items.remove(8)

        ol.delete(8)

        self.assertEqual([node.value for node in ol.get_all()], items)
Ejemplo n.º 22
0
 def test_7(self):
     ordered_list = OrderedList()
     ordered_list.add(1)
     ordered_list.add(2)
     ordered_list.add(5)
     ordered_list.add(3)
     self.assertEqual(ordered_list.head.val, 1)
     self.assertEqual(ordered_list.tail.val, 5)
     self.assertEqual(ordered_list.search_forward(4), False)
     self.assertEqual(ordered_list.search_forward(6), False)
     self.assertEqual(ordered_list.search_forward(1), True)
     self.assertEqual(ordered_list.search_backward(4), False)
     self.assertEqual(ordered_list.search_backward(2), True)
     self.assertEqual(ordered_list.search_backward(5), True)
Ejemplo n.º 23
0
    def test_delete_descending_begin(self):
        ol = OrderedList(asc=False)

        items = [4, 6, 2, 8, 5]

        for item in items:
            ol.add(item)

        items.sort(reverse=True)
        items.remove(2)

        ol.delete(2)

        self.assertEqual([node.value for node in ol.get_all()], items)
Ejemplo n.º 24
0
 def test_8(self):
     ordered_list = OrderedList()
     ordered_list.add(1)
     ordered_list.add(2)
     ordered_list.add(5)
     ordered_list.add(3)
     self.assertEqual(ordered_list.head.val, 1)
     self.assertEqual(ordered_list.tail.val, 5)
     self.assertEqual(ordered_list.pop(), 5)
     self.assertEqual(ordered_list.pop(1), 2)
     self.assertEqual(ordered_list.pop(), 3)
     self.assertRaises(IndexError, ordered_list.pop, 1)
     self.assertEqual(ordered_list.index(1), 0)
     self.assertEqual(ordered_list.pop(), 1)
     self.assertRaises(IndexError, ordered_list.pop)
Ejemplo n.º 25
0
 def test_OrderedList(self):
     ordered_list = OrderedList()
     self.assertEqual(ordered_list.is_empty(), True)
     ordered_list.add(2)
     ordered_list.add(1)
     ordered_list.add(3)
     self.assertEqual(ordered_list.size(), 3)
     self.assertEqual(ordered_list.index(2), 1)
     self.assertEqual(ordered_list.index(4), -1)
     self.assertEqual(ordered_list.search_forward(3), True)
     self.assertEqual(ordered_list.search_backward(3), True)
     self.assertEqual(ordered_list.remove(4), -1)
     self.assertEqual(ordered_list.remove(2), 1)
     self.assertEqual(ordered_list.pop(0), 1)
     self.assertEqual(ordered_list.pop(), 3)
Ejemplo n.º 26
0
class FindAscTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.ol = OrderedList(True)
        for i in range(0, 6):
            self.ol.add(i)

    def test(self):
        self.assertEqual(6, self.ol.len())
        self.assertEqual(6, self.ol.len_reverse())
        self.assertIsInstance(self.ol.find(0), Node)
        self.assertIsInstance(self.ol.find(5), Node)
        self.assertIsInstance(self.ol.find(3), Node)
        self.assertEqual(6, self.ol.len())
        self.assertEqual(6, self.ol.len_reverse())

    def test_empty(self):
        self.ol = OrderedList(True)
        self.assertIsNone(self.ol.find(3))
Ejemplo n.º 27
0
def create_huff_tree(char_freq):
    '''Create a Huffman tree for characters with non-zero frequency
    Returns the root node of the Huffman tree'''
    ol = OrderedList()
    for i in range(255):
        if char_freq[i] != 0:
            ol.add(HuffmanNode(i, char_freq[i]))
    while ol.size() > 1:
        a = ol.pop(0)
        b = ol.pop(0)
        if a.char < b.char:
            char = a.char
        else:
            char = b.char
        new = HuffmanNode(char, a.freq + b.freq)
        new.left = a
        new.right = b
        ol.add(new)
    return ol.pop(0)
Ejemplo n.º 28
0
 def test_OrderedList_coverage_cases(self):
     ordered_list = OrderedList()
     ordered_list.add(1)
     ordered_list.add(2)
     ordered_list.add(5)
     ordered_list.add(3)
     self.assertEqual(ordered_list.search_forward(4), False)
     self.assertEqual(ordered_list.search_forward(6), False)
     self.assertEqual(ordered_list.search_forward(1), True)
     self.assertEqual(ordered_list.search_backward(4), False)
     self.assertEqual(ordered_list.search_backward(2), True)
     self.assertEqual(ordered_list.search_backward(5), True)
     self.assertEqual(ordered_list.pop(), 5)
     self.assertEqual(ordered_list.pop(1), 2)
     self.assertEqual(ordered_list.pop(), 3)
     self.assertRaises(IndexError, ordered_list.pop, 1)
     self.assertEqual(ordered_list.index(1), 0)
     self.assertEqual(ordered_list.pop(), 1)
     self.assertRaises(IndexError, ordered_list.pop)
Ejemplo n.º 29
0
class DeleteFromListWithSingleValueTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.ol = OrderedList(True)
        self.ol.add(1)

    def test(self):
        self.assertEqual(1, self.ol.len())
        self.assertEqual(1, self.ol.len_reverse())
        self.assertEqual(1, self.ol.head.value)
        self.assertEqual(1, self.ol.tail.value)

        self.assertIsNone(self.ol.head.prev)
        self.assertIsNone(self.ol.head.next)
        self.assertIsNone(self.ol.tail.next)
        self.assertIsNone(self.ol.tail.prev)

        self.ol.delete(1)

        self.assertEqual(0, self.ol.len())
        self.assertEqual(0, self.ol.len_reverse())
        self.assertIsNone(self.ol.head)
        self.assertIsNone(self.ol.tail)
Ejemplo n.º 30
0
class DeleteFromMiddleAscListWithMultipleValuesTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.ol = OrderedList(True)
        for i in range(0, 6):
            self.ol.add(i)

    def test(self):
        self.assertEqual(6, self.ol.len())
        self.assertEqual(6, self.ol.len_reverse())
        self.assertEqual(0, self.ol.head.value)
        self.assertEqual(5, self.ol.tail.value)

        self.assertIsNone(self.ol.head.prev)
        self.assertIsNone(self.ol.tail.next)

        self.ol.delete(2)
        self.ol.delete(4)

        self.assertEqual(4, self.ol.len())
        self.assertEqual(4, self.ol.len_reverse())
        self.assertEqual(self.ol.find(3).prev, self.ol.find(1))
        self.assertEqual(self.ol.find(3).next, self.ol.find(5))
Ejemplo n.º 31
0
 def test_searching(self):
     l = OrderedList()
     for i in range(4):
         l.add(i)
     for i in range(4):
         self.assertTrue(l.search(i))