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]
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]
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]
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()
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)