ocaml_sql_parser/test/SQL_parser.ml

54 lines
1.2 KiB
OCaml

open Ast
let parse query =
let lexbuf = Lexing.from_string query in
Parser.main Lexer.read_token lexbuf
let () =
assert(parse "SELECT ab FROM b1" = Query(Select([Column("ab")], [Table "b1"])));
assert(parse "SELECT * FROM b1" = Query(Select([Asterisk], [Table "b1"])));
assert(parse "SELECT * FROM t1 CROSS JOIN t2" = Query(Select([Asterisk], [Join(Table("t1"), Cross, Table("t2"), None)])));
assert(parse "SELECT * FROM t1 JOIN t2 ON a = b" = Query(
Select([Asterisk], [
Join(
Table("t1"),
Left,
Table("t2"),
Some(
Condition(
"a",
Comparison(Equals, "b")
)
)
)
]
)
));
assert(parse "SELECT * FROM t1 JOIN t2 ON a = b JOIN t3 ON c = d" = Query(
Select([Asterisk], [
Join(
Join(
Table("t1"),
Left,
Table("t2"),
Some(
Condition(
"a",
Comparison(Equals, "b")
)
)
),
Left,
Table("t3"),
Some(
Condition(
"c",
Comparison(Equals, "d")
)
)
)
]
)
)
);