Ejemplo n.º 1
0
def test_breadth_first_sample_tree():
    """Check for the correct output of bft on a right-imbalanced tree."""
    tree = BST(SAMPLE_TREE)
    gen = tree.breadth_first()
    output = []
    for i in range(10):
        output.append(next(gen))
    assert output == [20, 12, 30, 10, 16, 28, 42, 1, 11, 27]
Ejemplo n.º 2
0
def test_breadth_first_left_imba():
    """Check for the correct output of bft on a left-imbalanced tree."""
    tree = BST(LEFT_IMBALANCED)
    gen = tree.breadth_first()
    output = []
    for i in range(6):
        output.append(next(gen))
    assert output == [6, 5, 4, 3, 2, 1]
Ejemplo n.º 3
0
def test_breadth_first_right_imba():
    """Check for the correct output of bft on a right-imbalanced tree."""
    tree = BST(RIGHT_IMBALANCED)
    gen = tree.breadth_first()
    output = []
    for i in range(6):
        output.append(next(gen))
    assert output == [1, 2, 3, 4, 5, 6]
Ejemplo n.º 4
0
def test_breadth_first_traversal():
    """Tests breadth-first traversal"""
    import types
    bintree = BST()

    with pytest.raises(TypeError):
        bintree.breadth_first(1)  # No args/kwargs
    with pytest.raises(TypeError):
        bintree.breadth_first(None)

    assert isinstance(bintree.breadth_first(), types.GeneratorType)

    bintree.insert(5)
    bintree.insert(3)
    bintree.insert(7)
    bintree.insert(6)
    bintree.insert(2)
    bintree.insert(4)
    bintree.insert(1)
    bintree.insert(9)
    bintree.insert(10)
    #      5
    #    /   \
    #   3     7
    #  /\    / \
    # 2  4  6   9
    # |         |
    # 1         10
    gen = bintree.breadth_first()

    assert gen.next() == 5
    assert gen.next() == 3
    assert gen.next() == 7
    assert gen.next() == 2
    assert gen.next() == 4
    assert gen.next() == 6
    assert gen.next() == 9
    assert gen.next() == 1
    assert gen.next() == 10

    with pytest.raises(StopIteration):
        gen.next()
Ejemplo n.º 5
0
def test_breadth_first_empty():
    '''Do you even read our docstrings?'''
    bst = BST()
    with pytest.raises(StopIteration) as message:
        next(bst.breadth_first())
    assert "Nothing to traverse." in str(message)