def test_delete_middle_node(self):
     linked_list = LinkedList([1, 1, 2, 3, 4])
     node = linked_list.find(2)
     linked_list.delete_middle_node(node)
     self.assertEqual("1 -> 1 -> 3 -> 4", linked_list.__repr__())
 def test_kth_to_last_returns_none_if_value_does_not_exist(self):
     linked_list = LinkedList([1, 1, 2, 3, 4])
     expected_node = None
     actual_node = linked_list.get_kth_to_last(10)
     self.assertEqual(expected_node, actual_node)
 def test_print_kth_to_last(self):
     linked_list = LinkedList([1, 1, 2, 3, 4])
     linked_list.print_kth_to_last(linked_list.head, 3)
 def test_kth_to_last_returns_correct_value(self):
     linked_list = LinkedList([1, 1, 2, 3, 4])
     expected_node = Node(3)
     actual_node = linked_list.get_kth_to_last(2)
     self.assertEqual(expected_node, actual_node)
 def test_delete_empty_linked_list_raises_exception(self):
     linked_list = LinkedList()
     with self.assertRaises(Exception) as context:
         linked_list.delete_node(1)
     self.assertTrue("Linked List is empty!" in str(context.exception))
 def test_remove_dups_no_buffer(self):
     linked_list = LinkedList([1, 1, 2, 3, 4])
     linked_list.remove_duplicates_with_runner()
     linked_list_repr = linked_list.__repr__()
     expected_repr = "1 -> 2 -> 3 -> 4"
     self.assertEqual(expected_repr, linked_list_repr)
 def test_remove_dups(self):
     linked_list = LinkedList([1, 2, 2, 4])
     linked_list.remove_duplicates()
     linked_list_repr = linked_list.__repr__()
     expected_repr = "1 -> 2 -> 4"
     self.assertEqual(expected_repr, linked_list_repr)
 def test_delete_last_node_changes_reference(self):
     linked_list = LinkedList([1, 2, 3, 4])
     linked_list.delete_node(4)
     expected = LinkedList([1, 2, 3])
     self.assertEqual(expected, linked_list)
 def test_delete_last_node_returns_deleted_node(self):
     linked_list = LinkedList([1, 2, 3, 4])
     deleted_node = linked_list.delete_node(4)
     self.assertEqual(deleted_node.data, 4)
 def test_delete_head_node_changes_reference(self):
     linked_list = LinkedList([1, 2, 3, 4])
     linked_list.delete_node(1)
     expected = LinkedList([2, 3, 4])
     self.assertEqual(linked_list, expected)