mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-06 12:54:29 +08:00
52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
import pytest
|
|
import parso
|
|
|
|
|
|
@pytest.mark.parametrize(('string', 'tokens'), [
|
|
('#', ['#']),
|
|
(' # ', [' ', '# ']),
|
|
(' # \n', [' ', '# ', '\n']),
|
|
(' # \f\n', [' ', '# ', '\f', '\n']),
|
|
(' \n', [' ', '\n']),
|
|
(' \n ', [' ', '\n', ' ']),
|
|
(' \f ', [' ', '\f', ' ']),
|
|
(' \f ', [' ', '\f', ' ']),
|
|
(' \r\n', [' ', '\r\n']),
|
|
('\\\n', ['\\\n']),
|
|
('\\\r\n', ['\\\r\n']),
|
|
('\t\t\n\t', ['\t\t', '\n', '\t']),
|
|
])
|
|
def test_simple_prefix_splitting(string, tokens):
|
|
tree = parso.parse(string)
|
|
leaf = tree.children[0]
|
|
assert leaf.type == 'endmarker'
|
|
|
|
parsed_tokens = list(leaf._split_prefix())
|
|
start_pos = (1, 0)
|
|
for pt, expected in zip(parsed_tokens, tokens):
|
|
assert pt.value == expected
|
|
|
|
# Calculate the estimated end_pos
|
|
if expected.endswith('\n'):
|
|
end_pos = start_pos[0] + 1, 0
|
|
else:
|
|
end_pos = start_pos[0], start_pos[1] + len(expected)
|
|
|
|
#assert start_pos == pt.start_pos
|
|
assert end_pos == pt.end_pos
|
|
start_pos = end_pos
|
|
|
|
|
|
@pytest.mark.parametrize(('string', 'types'), [
|
|
('# ', ['comment']),
|
|
('\r\n', ['newline']),
|
|
('\f', ['formfeed']),
|
|
('\\\n', ['backslash']),
|
|
])
|
|
def test_prefix_splitting_types(string, types):
|
|
tree = parso.parse(string)
|
|
leaf = tree.children[0]
|
|
assert leaf.type == 'endmarker'
|
|
parsed_tokens = list(leaf._split_prefix())
|
|
assert [t.type for t in parsed_tokens] == types
|