def test_Multiplication_of_symbols_is_parsed_as_expression(): assert ( parsed("foo*bar") == [ OperationTree("*", SymbolTree("foo"), SymbolTree("bar")) ] )
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")]) ] ) ] )
def test_Difference_of_symbol_and_number_is_parsed_as_expression(): assert ( parsed("foo-44") == [ OperationTree("-", SymbolTree("foo"), NumberTree("44")) ] )
def test_Sum_of_numbers_is_parsed_as_expression(): assert ( parsed("32+44") == [ OperationTree("+", NumberTree("32"), NumberTree("44")) ] )
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") ] ), [] ) ] )
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"))] )
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")) ] ) ] )
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"), ] ) ] )