1 #ifndef PARSER_SUITE_H_
2 #define PARSER_SUITE_H_
5 #include "script/parser.h"
8 TEST(read_expr_from_file_test)
12 struct ParseResult result = read_expr_from_file(gc, "test-data/simple-sum.lisp");
14 ASSERT_TRUE(!result.is_error, result.error_message);
16 struct Expr head = result.expr;
18 struct Expr expr = head;
19 ASSERT_INTEQ(EXPR_CONS, expr.type);
20 ASSERT_INTEQ(EXPR_ATOM, expr.cons->car.type);
21 ASSERT_INTEQ(ATOM_SYMBOL, expr.cons->car.atom->type);
22 ASSERT_STREQ("+", expr.cons->car.atom->sym);
24 expr = expr.cons->cdr;
25 ASSERT_INTEQ(EXPR_CONS, expr.type);
26 ASSERT_INTEQ(EXPR_ATOM, expr.cons->car.type);
27 ASSERT_INTEQ(ATOM_NUMBER, expr.cons->car.atom->type);
28 ASSERT_LONGINTEQ(1L, expr.cons->car.atom->num);
30 expr = expr.cons->cdr;
31 ASSERT_INTEQ(EXPR_CONS, expr.type);
32 ASSERT_INTEQ(EXPR_ATOM, expr.cons->car.type);
33 ASSERT_INTEQ(ATOM_NUMBER, expr.cons->car.atom->type);
34 ASSERT_LONGINTEQ(2L, expr.cons->car.atom->num);
36 expr = expr.cons->cdr;
37 ASSERT_INTEQ(EXPR_CONS, expr.type);
38 ASSERT_INTEQ(EXPR_ATOM, expr.cons->car.type);
39 ASSERT_INTEQ(ATOM_NUMBER, expr.cons->car.atom->type);
40 ASSERT_LONGINTEQ(3L, expr.cons->car.atom->num);
42 expr = expr.cons->cdr;
43 ASSERT_INTEQ(EXPR_ATOM, expr.type);
44 ASSERT_INTEQ(ATOM_SYMBOL, expr.atom->type);
45 ASSERT_STREQ("nil", expr.atom->sym);
52 TEST_SUITE(parser_suite)
54 TEST_RUN(read_expr_from_file_test);
59 #endif // PARSER_SUITE_H_