python/test_ravl.py

70 lines
1.2 KiB
Python

from ravl import RAVLTree
import logging
import pytest
logger = logging.getLogger(__name__)
def test_empty():
tree = RAVLTree()
assert tree.root is None
assert tree.is_correct
def test_one_node():
tree = RAVLTree()
tree.insert(1)
assert tree.root is not None
assert 1 == tree.root.value
assert 0 == tree.root.rank
assert tree.root.left is None
assert tree.root.right is None
assert tree.is_correct
@pytest.mark.parametrize("values", [[1, 2], [1, 2, 0]])
def test_no_rebalance_needed(values):
tree = RAVLTree()
for value in values:
tree.insert(value)
assert tree.is_correct
def test_three_nodes_rebalanced():
tree = RAVLTree()
for value in (1, 2, 3):
print(tree)
tree.insert(value)
assert tree.is_correct
def test_bigger_tree():
tree = RAVLTree()
for i in range(50):
tree.insert(i)
assert tree.is_correct
def test_bigger_tree_reversed():
tree = RAVLTree()
for i in range(50):
tree.insert(-i)
assert tree.is_correct
def test_promote():
tree = RAVLTree()
for value in (0, 1, -1):
tree.insert(value)
assert tree.is_correct