def test_insert_last(self): """ Tests adding a node to the end of a list """ l = LinkedList() l.insert_first("a") l.insert_last("b") self.assertEqual(l.size(), 2) self.assertEqual(l.get_last().data, "b")
def test_insert_at_out_of_bounds(self): """ Tests that node is inserted at the end of a list when index is out of bounds """ l = LinkedList() l.insert_last("a") l.insert_last("b") l.insert_at("hi", 30) self.assertEqual(l.get_at(0).data, "a") self.assertEqual(l.get_at(1).data, "b") self.assertEqual(l.get_at(2).data, "hi")
def test_insert_at_last_index(self): """ Tests for insertion of node at the end of a list """ l = LinkedList() l.insert_last("a") l.insert_last("b") l.insert_at("hi", 2) self.assertEqual(l.get_at(0).data, "a") self.assertEqual(l.get_at(1).data, "b") self.assertEqual(l.get_at(2).data, "hi")
def test_remove_at_given_index(self): """ Tests for removal of node at given index """ l = LinkedList() l.insert_last(1) l.insert_last(2) l.insert_last(3) l.insert_last(4) self.assertEqual(l.get_at(1).data, 2) l.remove_at(1) self.assertEqual(l.get_at(1).data, 3)
def test_remove_at_first_node(self): """ Tests removal of first node """ l = LinkedList() l.insert_last(1) l.insert_last(2) l.insert_last(3) l.insert_last(4) self.assertEqual(l.get_at(0).data, 1) l.remove_at(0) self.assertEqual(l.get_at(0).data, 2)
def test_get_at(self): """ Tests the return of a node from a given index """ l = LinkedList() l.insert_last(1) l.insert_last(2) l.insert_last(3) l.insert_last(4) self.assertEqual(l.get_at(0).data, 1) self.assertEqual(l.get_at(1).data, 2) self.assertEqual(l.get_at(2).data, 3) self.assertEqual(l.get_at(3).data, 4)
def test_insert_at_0_non_empty_list(self): """ Tests for insertion of node at index 0 on non-empty list """ l = LinkedList() l.insert_last("a") l.insert_last("b") l.insert_last("c") l.insert_at("hi", 0) self.assertEqual(l.get_at(0).data, "hi") self.assertEqual(l.get_at(1).data, "a") self.assertEqual(l.get_at(2).data, "b") self.assertEqual(l.get_at(3).data, "c")
def test_insert_at_middle_index(self): """ Test for insertion of node at index in the middle of a list """ l = LinkedList() l.insert_last("a") l.insert_last("b") l.insert_last("c") l.insert_last("d") l.insert_at("hi", 2) self.assertEqual(l.get_at(0).data, "a") self.assertEqual(l.get_at(1).data, "b") self.assertEqual(l.get_at(2).data, "hi") self.assertEqual(l.get_at(3).data, "c") self.assertEqual(l.get_at(4).data, "d")
def test_for_in_loop_on_linked_list(self): """ Tests that a for of loop will work on a linked list """ l = LinkedList() l.insert_last(1) l.insert_last(2) l.insert_last(3) l.insert_last(4) for node in l: node.data += 10 self.assertEqual(l.get_at(0).data, 11) self.assertEqual(l.get_at(1).data, 12) self.assertEqual(l.get_at(2).data, 13) self.assertEqual(l.get_at(3).data, 14)
def test_for_each(self): """ Test that a transform runs on each node """ def fn(node): node.data += 10 l = LinkedList() l.insert_last(1) l.insert_last(2) l.insert_last(3) l.insert_last(4) l.for_each(fn) self.assertEqual(l.get_at(0).data, 11) self.assertEqual(l.get_at(1).data, 12) self.assertEqual(l.get_at(2).data, 13) self.assertEqual(l.get_at(3).data, 14)