def test_parse_expressions(): source = "foo = method(a, b, return a + b); print(foo(1, 2))" m = Message("foo") m.setnext(Message("=")) args = [Message("a"), Message("b")] args.append(Message("return")) args[-1].setnext(Message("a")) args[-1].setnext(Message("+")) args[-1].setnext(Message("B")) m.setnext(Message("method", args)) m.setnext(Message(";")) m.setnext(Message("print")) args = [Message("1", value="1"), Message("2", value="2")] m.setnext(Message("foo", args)) expected = m actual = parse(lex(source)) assert actual == expected
def test_parse_message_with_arguments(source, expected): actual = parse(lex(source)) assert actual == expected
def test_error(): with pytest.raises(MioSyntaxError) as error: parse(lex("f("))
def test_parse_message(source, expected): actual = parse(lex(source)) assert actual == expected