def test_pos_map(): lx = Lexer.from_source(t1) psr = Parser(lx, commands) root = psr.parse() root.render() pmap = root.dump_pos_map() tp1 = TextPos.from_source('') tp2 = TextPos.from_source(r0) _, st, en = pmap.dest_to_src_range(tp1, tp2) print(repr(st), repr(en)) assert r0[tp1.offset:tp2.offset] == t0[st.offset:en.offset]
def test_pos_map_rev3(): lx = Lexer.from_source(t1) psr = Parser(lx, commands) root = psr.parse() root.render() pmap = root.dump_pos_map() tp1 = TextPos.from_source(t1[:26]) tp2 = TextPos.from_source(t1[:35]) st, en = pmap.src_to_dest_range(tp1, tp2) print(repr(st), repr(en)) assert t1[tp1.offset:tp2.offset] == r1[st.offset:en.offset]
def test_error_3(): lx = Lexer.from_source(e3) psr = Parser(lx, commands) with pytest.raises(UnpairedBracketError): psr.parse().render()
def test_error_1(): lx = Lexer.from_source(e1) psr = Parser(lx, commands) with pytest.raises(UnexpectedEndOfFile): psr.parse().render()
def test_clean_3(): lx = Lexer.from_source(t3) psr = Parser(lx, commands) root = psr.parse() assert root.render() == r3
def test_text_pos_from_lexer(): lx = Lexer.from_source(t1) list(lx.tokens()) assert lx.pos.offset == len(t1) assert lx.pos.line == 6 assert lx.pos.col == 7