def test_SinglyLinkedList(): random.seed(1000) sll = SinglyLinkedList() assert raises(IndexError, lambda: sll[2]) sll.append_left(5) sll.append(1) sll.append_left(2) sll.append(3) sll.insert_after(sll[1], 4) sll.insert_after(sll[-1], 6) sll.insert_at(0, 2) sll.insert_at(-1, 9) sll.extract(2) sll.extract(0) sll.extract(-1) sll[-2].data = 0 assert str(sll) == "[2, 4, 1, 0, 9]" assert len(sll) == 5 assert raises(IndexError, lambda: sll.insert_at(6, None)) assert raises(IndexError, lambda: sll.extract(20)) sll_copy = copy.deepcopy(sll) for i in range(len(sll)): if i % 2 == 0: sll.pop_left() else: sll.pop_right() assert str(sll) == "[]" for _ in range(len(sll_copy)): index = random.randint(0, len(sll_copy) - 1) sll_copy.extract(index) assert str(sll_copy) == "[]" assert raises(ValueError, lambda: sll_copy.extract(1))
def test_SinglyLinkedList(): random.seed(1000) sll = SinglyLinkedList() assert raises(IndexError, lambda: sll[2]) sll.appendleft(5) sll.append(1) sll.appendleft(2) sll.append(3) sll.insert_after(sll[1], 4) sll.insert_after(sll[-1], 6) sll.insert_at(0, 2) sll.insert_at(-1, 9) sll.extract(2) assert sll.popleft().key == 2 assert sll.popright().key == 6 sll[-2].key = 0 assert str(sll) == "['2', '4', '1', '0', '9']" assert len(sll) == 5 assert raises(IndexError, lambda: sll.insert_at(6, None)) assert raises(IndexError, lambda: sll.extract(20)) sll_copy = DoublyCircularLinkedList() for i in range(sll.size): sll_copy.append(sll[i]) for i in range(len(sll)): if i % 2 == 0: sll.popleft() else: sll.popright() assert str(sll) == "[]" for _ in range(len(sll_copy)): index = random.randint(0, len(sll_copy) - 1) sll_copy.extract(index) assert str(sll_copy) == "[]" assert raises(ValueError, lambda: sll_copy.extract(1))