def test_kth_to_last_failures(fn): head = Node.from_iterable(range(10)) with pytest.raises(IndexError): fn(head, -1) with pytest.raises(IndexError): fn(head, 10)
def test_intersection(fn): # a - b - c - d # / # e - # # g - h - i a = Node.from_iterable('abcd') b = a.next e = Node('e', next=b) g = Node.from_iterable('ghi') assert fn(a, a) == a assert fn(a, b) == b assert fn(a, e) == b assert fn(b, e) == b assert fn(a, g) == None
def test_remove_dups(fn): head = Node.from_iterable([1, 2, 3, 2, 3, 5, 2, 5, 6, 1]) fn(head) assert head.to_list() == [1, 2, 3, 5, 6]
def test_kth_to_last(fn): lst = list(range(10)) head = Node.from_iterable(lst) for k, element in enumerate(reversed(lst)): assert fn(head, k) == element
def test_delete_middle_node(fn): head = Node.from_iterable('abcdef') c = head.next.next fn(c) assert head.to_list() == list('abdef')