from mau.parsers.nodes import DocumentNode, ContainerNode from mau.parsers.base_parser import ParserError from mau.parsers.main_parser import MainParser from mau.visitors.html_visitor import HTMLVisitor from tests.helpers import ( dedent, init_parser_factory, init_ast_factory, ast_test_factory, remove_indentation, visitlist_factory, ) init_parser = init_parser_factory(MainParser) init_ast = init_ast_factory(MainParser) _test = ast_test_factory(MainParser, HTMLVisitor) visitlist = visitlist_factory(HTMLVisitor) def test_text(): v = HTMLVisitor() output = v.visit( { "type": "text", "value": "This is text",
from unittest.mock import patch from mau.lexers.base_lexer import ( Token, TokenTypes, EOL, EOF, Text, Literal, ) from mau.lexers.base_lexer import BaseLexer from mau.parsers.base_parser import BaseParser, ParserError, ExpectedError, TokenError from tests.helpers import init_parser_factory init_parser = init_parser_factory(BaseParser) def test_initial_state(): p = BaseParser() assert p.index == -1 with pytest.raises(ValueError): p.current_token def test_load(): p = init_parser("\n") assert p.index == -1 with pytest.raises(ValueError):
from unittest.mock import patch from mau.parsers.text_parser import TextParser from tests.helpers import listasdict, init_parser_factory, parser_test_factory init_parser = init_parser_factory(TextParser) _test = parser_test_factory(TextParser) def test_collect_macro_arguments_single_argument(): source = "(value1)" p = init_parser(source) assert p._collect_macro_args() == "value1" def test_collect_macro_arguments_multiple_arguments(): source = "(value1,value2)" p = init_parser(source) assert p._collect_macro_args() == "value1,value2" def test_collect_macro_arguments_single_argument_with_quotes(): source = '("value1")' p = init_parser(source) assert p._collect_macro_args() == '"value1"'
import pytest from mau.parsers.preprocess_variables_parser import ( PreprocessVariablesParser, PreprocessError, ) from tests.helpers import listasdict, init_parser_factory, dedent init_parser = init_parser_factory(PreprocessVariablesParser) def test_plain_text(): p = init_parser("This is text", {"attr": "5"}) p.parse() assert listasdict(p.nodes) == [{ "type": "text", "value": "This is text\n", }] def test_replace_variable(): p = init_parser("This is number {attr}", {"attr": "5"}) p.parse() assert listasdict(p.nodes) == [{ "type": "text", "value": "This is number 5\n", }]
import pytest from mau.parsers.base_parser import ParserError from mau.parsers.arguments_parser import ArgumentsParser from tests.helpers import init_parser_factory init_parser = init_parser_factory(ArgumentsParser) def test_single_unnamed_argument_no_spaces(): p = init_parser("value") p.parse() assert p.args == ["value"] assert p.kwargs == {} def test_single_unnamed_argument_with_spaces(): p = init_parser("value with spaces") p.parse() assert p.args == ["value with spaces"] assert p.kwargs == {} def test_multiple_unnamed_arguments_no_spaces(): p = init_parser("value1,value2") p.parse() assert p.args == ["value1", "value2"]