def test_get_nodes_by_index(self): linked_list = LinkedList.from_list([1, 2, 3]) assert linked_list[0] == linked_list.head assert linked_list[1] == linked_list.head.next assert linked_list[2] == linked_list.head.next.next with raises(IndexError): _ = linked_list[3]
def test_check_if_element_is_in_linked_list(self): linked_list = LinkedList.from_list([1, 2, 3]) assert 1 in linked_list assert 2 in linked_list assert 3 in linked_list assert 4 not in linked_list assert 0 not in linked_list
def test_linked_list_from_list(self): starting_list = [1, 2, 3] linked_list = LinkedList.from_list(starting_list) assert linked_list.to_list() == starting_list assert linked_list.head.key == 1 assert linked_list.head.next.key == 2 assert linked_list.head.next.next.key == 3 assert not linked_list.head.next.next.next
def test_insert_a_node_after_an_index(self): linked_list = LinkedList.from_list([1, 2, 4]) linked_list.insert_after_index(1, 3) assert linked_list.to_list() == [1, 2, 3, 4]
def test_insert_a_node_after_last_node_in_a_linked_list(self): linked_list = LinkedList.from_list([1, 2, 3]) linked_list.insert_after(linked_list[2], 4) assert linked_list.to_list() == [1, 2, 3, 4]
def test_insert_a_node_after_specified_node_in_a_linked_list(self): linked_list = LinkedList.from_list([1, 2, 4]) linked_list.insert_after(linked_list[1], 3) assert linked_list.to_list() == [1, 2, 3, 4]
def test_push_a_node_to_the_start_of_a_linked_list(self): linked_list = LinkedList.from_list([1, 2, 3]) linked_list.push(0) assert linked_list.to_list() == [0, 1, 2, 3]
def test_delete_the_last_node(self): linked_list = LinkedList.from_list([1, 2, 3]) linked_list.delete(2) assert linked_list.to_list() == [1, 2]
def test_length_of_non_empty_linked_list_is_number_of_nodes(self): linked_list = LinkedList.from_list([1, 2, 3, 4]) assert len(linked_list) == 4
def test_delete_node_at_head(self): linked_list = LinkedList.from_list([1, 2, 3]) linked_list.delete(0) assert linked_list.to_list() == [2, 3]
def test_delete_node_at_index(self): linked_list = LinkedList.from_list([1, 2, 3]) linked_list.delete(1) assert linked_list.to_list() == [1, 3]
def test_append_a_node_to_a_linked_list(self): linked_list = LinkedList.from_list([1, 2, 3]) linked_list.append(4) assert linked_list.to_list() == [1, 2, 3, 4]
def test_insert_a_node_after_an_invalid_index(self): linked_list = LinkedList.from_list([1, 2, 3]) with raises(IndexError): linked_list.insert_after_index(10, 4)
def test_insert_a_node_after_the_final_index(self): linked_list = LinkedList.from_list([1, 2, 3]) linked_list.insert_after_index(2, 4) assert linked_list.to_list() == [1, 2, 3, 4]