| import pytest | |
| from stanza.models.constituency.tree_stack import TreeStack | |
| from stanza.tests import * | |
| pytestmark = [pytest.mark.pipeline, pytest.mark.travis] | |
| def test_simple(): | |
| stack = TreeStack(value=5, parent=None, length=1) | |
| stack = stack.push(3) | |
| stack = stack.push(1) | |
| expected_values = [1, 3, 5] | |
| for value in expected_values: | |
| assert stack.value == value | |
| stack = stack.pop() | |
| assert stack is None | |
| def test_iter(): | |
| stack = TreeStack(value=5, parent=None, length=1) | |
| stack = stack.push(3) | |
| stack = stack.push(1) | |
| stack_list = list(stack) | |
| assert list(stack) == [1, 3, 5] | |
| def test_str(): | |
| stack = TreeStack(value=5, parent=None, length=1) | |
| stack = stack.push(3) | |
| stack = stack.push(1) | |
| assert str(stack) == "TreeStack(1, 3, 5)" | |
| def test_len(): | |
| stack = TreeStack(value=5, parent=None, length=1) | |
| assert len(stack) == 1 | |
| stack = stack.push(3) | |
| stack = stack.push(1) | |
| assert len(stack) == 3 | |
| def test_long_len(): | |
| """ | |
| Original stack had a bug where this took exponential time... | |
| """ | |
| stack = TreeStack(value=0, parent=None, length=1) | |
| for i in range(1, 40): | |
| stack = stack.push(i) | |
| assert len(stack) == 40 | |