precedence tests and a parse_tree method for Precedence objects

This commit is contained in:
Dave Halter
2014-03-07 15:05:28 +01:00
parent 77bfb0fb7b
commit f2e2a684d5
2 changed files with 32 additions and 19 deletions

View File

@@ -1,26 +1,26 @@
import pytest
from jedi.parser import Parser
from jedi.evaluate import precedence
cp = lambda *args: precedence.create_precedence(iter(args))
@pytest.skip('sorry precedence stuff is still not implemented yet')
def parse_tree(statement_string):
p = Parser(statement_string, no_docstr=True)
stmt = p.module.statements[0]
iterable = iter(stmt.expression_list())
pr = precedence.create_precedence(iterable)
if isinstance(pr, precedence.Precedence):
return pr.parse_tree(strip_literals=True)
else:
return pr
def test_simple():
p = cp(1, '+', 2)
assert p.left == 1
assert p.operator == '+'
assert p.right == 2
p = cp('+', 2)
assert p.left is None
assert p.operator == '+'
assert p.right == 2
assert parse_tree('1+2') == (1, '+', 2)
assert parse_tree('+2') == (None, '+', 2)
@pytest.skip('sorry precedence stuff is still not implemented yet')
def test_invalid():
"""Should just return a simple operation."""
assert cp(1, '+') == 1
assert cp('+') is None
assert parse_tree('1 +') == 1
assert parse_tree('+') is None
assert cp('*', 1) == 1
assert parse_tree('* 1') == 1