def test_node_delete_root_two_branches(): n = PlainNode(0) n.insert(5) n.insert(-5) n.delete(0) assert n.value in (5, -5) assert bool(n.left) ^ bool(n.right)
def test_node_delete_root_one_branch(): n = PlainNode(0) n.insert(5) n.delete(0) assert n.value == 5 assert n.depth == 1 assert not n.left and not n.right
def test_node_delete_non_existing_value(): n = PlainNode(0) n.insert(5) n.insert(10) n.insert (3) n.insert(-5) with pytest.raises(KeyError): n.delete(7)
def test_node_delete_branch_left(): n = PlainNode(0) n.insert(5) n.insert(3) n.delete(5) assert n.value is 0 assert n.right.value == 3 assert n.right.depth == 1 assert not n.right.left and not n.right.right
def test_node_delete_branch_2_leaves(): n = PlainNode(0) n.insert(5) n.insert(10) n.insert (3) n.delete(5) assert n.value is 0 assert n.right.value in (10, 3) assert n.right.depth == 2 assert n.right.left and n.right.left.value == 3 or n.right.right and n.right.right.value == 10 assert bool(n.right.left) ^ bool(n.right.right)
def test_node_delete_root_single_node(): n = PlainNode(0) assert not(n.delete(0))
def test_node_delete_leaf(): n = PlainNode(0) n.insert(5) n.delete(5) assert not n.right assert not n.left