def test_init_many_element_list(self):
        linked = LinkedList(['pear', 'apple', 'banana'])

        self.assertEqual('pear', linked.first_node.data)
        self.assertEqual('apple', linked.first_node.next.data)
        self.assertEqual('banana', linked.first_node.next.next.data)
        self.assertEqual(None, linked.first_node.next.next.next)
 def test_insert_index_2_one_element_list(self):
     linked = LinkedList(['one'])
     with self.assertRaises(OutOfRangeError):
         linked.insert_at_index(2, 'second')
 def test_is_empty_false(self):
     self.assertFalse(LinkedList([4.5]).is_empty())
 def test_repr_many_elements(self):
     self.assertEqual(LinkedList([1, 2, 3, 4]).__repr__(), 'LinkedList([1, 2, 3, 4])')
 def test_repr_empty_list(self):
     self.assertEqual(LinkedList([]).__repr__(), 'LinkedList([])')
 def test_str_one_element(self):
     self.assertEqual(LinkedList(['one']).__str__(), '| one | -> None')
 def test_equality_to_list(self):
     self.assertNotEqual(LinkedList(['one']), ['one'])
 def test_delete_bottom_many_element_list(self):
     linked = LinkedList(['one', 'two', 3, 4, 5, 6])
     linked.delete_from_bottom()
     self.assertEqual("| one | -> | two | -> | 3 | -> | 4 | -> | 5 | -> None", str(linked))
 def test_delete_index_1_empty_list(self):
     linked = LinkedList([])
     with self.assertRaises(OutOfRangeError):
         linked.delete_at_index(1)
 def test_delete_bottom_one_element_list(self):
     linked = LinkedList(['one'])
     linked.delete_from_bottom()
     self.assertEqual(None, linked.first_node)
 def test_delete_bottom_two_element_list(self):
     linked = LinkedList(['one', 'two'])
     linked.delete_from_bottom()
     self.assertEqual('one', linked.first_node.data)
     self.assertEqual(None, linked.first_node.next)
 def test_delete_bottom_empty_list(self):
     linked = LinkedList([])
     with self.assertRaises(IndexError):
         linked.delete_from_bottom()
 def test_delete_top_one_element_list(self):
     linked = LinkedList(['two'])
     linked.delete_from_top()
     self.assertEqual(None, linked.first_node)
 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_equality_one(self):
     self.assertEqual(LinkedList(['one']), LinkedList(['one']))
 def test_delete_index_0_one_element_list(self):
     linked = LinkedList(['one'])
     linked.delete_at_index(0)
     self.assertEqual(None, linked.first_node)
 def test_equality_not_equal(self):
     self.assertNotEqual(LinkedList(['one']), LinkedList(['one', 'two']))
 def test_delete_index_1_one_element_list(self):
     linked = LinkedList(['one'])
     with self.assertRaises(OutOfRangeError):
         linked.delete_at_index(1)
    def test_init_one_element_list(self):
        linked = LinkedList(['one'])

        self.assertEqual('one', linked.first_node.data)
        self.assertEqual(None, linked.first_node.next)
 def test_delete_index_3_many_element_list(self):
     linked = LinkedList(['one', 'two', 3, 4])
     linked.delete_at_index(3)
     self.assertEqual("| one | -> | two | -> | 3 | -> None", str(linked))
 def test_str_empty_list(self):
     self.assertEqual(LinkedList([]).__str__(), '| None | -> None')
 def test_delete_index_5_many_element_list(self):
     linked = LinkedList(['one', 'two', 3, 4])
     with self.assertRaises(OutOfRangeError):
         linked.delete_at_index(5)
 def test_str_many_elements(self):
     self.assertEqual(LinkedList(['first', 'second', 'third']).__str__(),
                      '| first | -> | second | -> | third | -> None')
 def test_init_empty_list(self):
     self.assertEqual(None, LinkedList([]).first_node)
 def test_repr_one_element(self):
     self.assertEqual(LinkedList([3456]).__repr__(), 'LinkedList([3456])')
    def test_generator(self):
        linked = LinkedList(['one'])

        for node in linked:
            self.assertEqual(node.data, 'one')
 def test_is_empty_true(self):
     self.assertTrue(LinkedList([]).is_empty())
 def test_equality_empty(self):
     self.assertEqual(LinkedList([]), LinkedList([]))
 def test_find_index_empty_list(self):
     linked = LinkedList([])
     self.assertEqual(None, linked.find_index(2))
 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)