def test_insert_index_2_many_element_list(self):
     linked = LinkedList(['one', 'two', 4])
     linked.insert_at_index(2, '3')
     self.assertEqual('3', linked.get_node_with_value('3').data)
     self.assertEqual(4, linked.get_node_with_value('3').next.data)
     self.assertEqual("| one | -> | two | -> | 3 | -> | 4 | -> None", str(linked))
 def test_insert_index_2_one_element_list(self):
     linked = LinkedList(['one'])
     with self.assertRaises(OutOfRangeError):
         linked.insert_at_index(2, 'second')
 def test_insert_index_1_one_element_list(self):
     linked = LinkedList(['one'])
     linked.insert_at_index(1, 2)
     self.assertEqual('one', linked.first_node.data)
     self.assertEqual(2, linked.first_node.next.data)
 def test_insert_index_0_one_element_list(self):
     linked = LinkedList([2])
     linked.insert_at_index(0, 'first')
     self.assertEqual('first', linked.first_node.data)
     self.assertEqual(2, linked.first_node.next.data)
 def test_insert_index_1_empty_list(self):
     linked = LinkedList([])
     with self.assertRaises(OutOfRangeError):
         linked.insert_at_index(1, 'first')
 def test_insert_index_0_empty_list(self):
     linked = LinkedList([])
     linked.insert_at_index(0, 'first')
     self.assertEqual('first', linked.first_node.data)
     self.assertEqual(None, linked.first_node.next)