Beispiel #1
0
 def test_insert_after(self):
     l = SingleLinkedList([1])
     node = l.get_n_th_node(0)
     l.insert_after(node, 2)
     self._check_list(l, (1, 2))
     l.insert_after(node, 3)
     self._check_list(l, (1, 3, 2))
     l.insert_after(l.get_n_th_node(2), 7)
     self._check_list(l, (1, 3, 2, 7))
Beispiel #2
0
 def test_insert_before(self):
     l = SingleLinkedList([1])
     node = l.get_n_th_node(0)
     l.insert_before(node, 5)
     self._check_list(l, (5, 1))
     l.insert_before(node, 4)
     self._check_list(l, (5, 4, 1))
     l.insert_before(l.get_n_th_node(0), 9)
     self._check_list(l, (9, 5, 4, 1))
     l.insert_before(l.get_n_th_node(2), 12)
     self._check_list(l, (9, 5, 12, 4, 1))
Beispiel #3
0
 def test_insert_before_by_reordering(self):
     l = SingleLinkedList([1])
     node = l.get_n_th_node(0)
     l.insert_before_by_reordering(node, 3)
     self._check_list(l, (3, 1))
     l.insert_before_by_reordering(node, 5)
     self._check_list(l, (5, 3, 1))
     node = l.get_n_th_node(2)
     node = l.insert_before_by_reordering(node, 8)
     self._check_list(l, (5, 3, 8, 1))
     node = l.insert_before_by_reordering(node, 6)
     self._check_list(l, (5, 3, 8, 6, 1))
Beispiel #4
0
 def test_get_by_index(self):
     count = 10
     l = SingleLinkedList(100 * i for i in range(count))
     indices = list(range(count))
     random.shuffle(indices)
     for random_index in indices:
         value = l.get_n_th_node(random_index).value
         self.assertEqual(100 * random_index, value)
Beispiel #5
0
    def test_exceptions(self):
        l1 = SingleLinkedList([1])
        l2 = SingleLinkedList([1])

        l1_node = l1.get_n_th_node(0)
        self.assertRaises(NodeIsUnreachableError,
                          l2.insert_before, l1_node, 3)
        self.assertRaises(InvalidPositionError,
                          l1.insert_at_position, 100, 100)
        self.assertRaises(InvalidPositionError,
                          l1.get_n_th_node, 1)