def test_pop_invalid(): ll = SinglyLinkedList() with pytest.raises(AssertionError): ll.pop(0) ll.insert(0, 0) for i in range(-ITERS // 2, ITERS // 2 + 1): if i == 0: continue with pytest.raises(AssertionError): ll.pop(i)
def test_pop_only_element(): ll = SinglyLinkedList() for data in [0, "a", 1.5, [], {}, SinglyLinkedList()]: ll.insert(0, data) assert (not ll.is_empty()) assert (id(ll.peek_head()) == id(ll.peek_tail())) actual = ll.pop(0) assert (ll.is_empty()) assert (actual == data)
def test_random_ops(): ll, arr = SinglyLinkedList(), [] for i in range(ITERS): index = random.randrange(i + 1) data = random.randrange(MAX_VAL) ll.insert(index, data) arr.insert(index, data) assert (ll.to_array() == arr) for i in range(ITERS): index = random.randrange(ITERS) actual = ll.peek(index) expected = arr[index] assert (actual == expected) for i in range(ITERS, 0, -1): index = random.randrange(i) actual = arr.pop(index) expected = ll.pop(index) assert (actual == expected) assert (ll.to_array() == arr) assert (ll.is_empty() and len(arr) == 0)