Exemplo n.º 1
0
def test_Multiplication_of_symbols_is_parsed_as_expression():
    assert (
        parsed("foo*bar") ==
        [
            OperationTree("*", SymbolTree("foo"), SymbolTree("bar"))
        ]
    )
Exemplo n.º 2
0
def test_Function_definition_with_params_and_commands_gets_parsed():
    assert (
        parsed('{:(x,yy)print(3-4) a="x" print(a)}') ==
        [
            FunctionDefTree(
                [
                    SymbolTree("x"),
                    SymbolTree("yy")
                ],
                [
                    FunctionCallTree(
                        SymbolTree("print"),
                        [
                            OperationTree(
                                '-',
                                NumberTree('3'),
                                NumberTree('4')
                            )
                        ]
                    ),
                    AssignmentTree(SymbolTree("a"), StringTree("x")),
                    FunctionCallTree(SymbolTree("print"), [SymbolTree("a")])
                ]
            )
        ]
    )
Exemplo n.º 3
0
def test_Difference_of_symbol_and_number_is_parsed_as_expression():
    assert (
        parsed("foo-44") ==
        [
            OperationTree("-", SymbolTree("foo"), NumberTree("44"))
        ]
    )
Exemplo n.º 4
0
def test_Sum_of_numbers_is_parsed_as_expression():
    assert (
        parsed("32+44") ==
        [
            OperationTree("+", NumberTree("32"), NumberTree("44"))
        ]
    )
Exemplo n.º 5
0
def test_Multiple_function_calls_with_various_args_get_parsed():
    assert (
        parsed("print('a',3,4/12)(512)()") ==
        [
            FunctionCallTree(
                FunctionCallTree(
                    FunctionCallTree(
                        SymbolTree("print"),
                        [
                            StringTree("a"),
                            NumberTree("3"),
                            OperationTree(
                                "/",
                                NumberTree("4"),
                                NumberTree("12")
                            )
                        ]
                    ),
                    [
                        NumberTree("512")
                    ]
                ),
                []
            )
        ]
    )
Exemplo n.º 6
0
def test_Comparisons_are_parsed():
    assert (
        parsed("12<3") ==
        [OperationTree("<", NumberTree("12"), NumberTree("3"))]
    )
    assert (
        parsed("12>x") ==
        [OperationTree(">", NumberTree("12"), SymbolTree("x"))]
    )
    assert (
        parsed("x<=1") ==
        [OperationTree("<=", SymbolTree("x"), NumberTree("1"))]
    )
    assert (
        parsed("y>=x") ==
        [OperationTree(">=", SymbolTree("y"), SymbolTree("x"))]
    )
    assert (
        parsed("y==x") ==
        [OperationTree("==", SymbolTree("y"), SymbolTree("x"))]
    )
Exemplo n.º 7
0
def test_Function_call_with_various_args_gets_parsed():
    assert (
        parsed("print('a',3,4/12)") ==
        [
            FunctionCallTree(
                SymbolTree("print"),
                [
                    StringTree("a"),
                    NumberTree("3"),
                    OperationTree("/", NumberTree("4"), NumberTree("12"))
                ]
            )
        ]
    )
Exemplo n.º 8
0
def test_Spaces_are_allowed_where_unimportant():
    assert (
        parsed('''
        {:( x, y )
            x+y
            foo( 3 )
        }( 3, 4 )
        ''') ==
        [
            FunctionCallTree(
                FunctionDefTree(
                    [
                        SymbolTree("x"),
                        SymbolTree("y"),
                    ],
                    [
                        OperationTree(
                            '+',
                            SymbolTree("x"),
                            SymbolTree("y"),
                        ),
                        FunctionCallTree(
                            SymbolTree("foo"),
                            [
                                NumberTree("3"),
                            ]
                        ),
                    ]
                ),
                [
                    NumberTree("3"),
                    NumberTree("4"),
                ]
            )
        ]
    )