aboutsummaryrefslogtreecommitdiff
path: root/test/test_parser.ml
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--test/test_parser.ml38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/test_parser.ml b/test/test_parser.ml
new file mode 100644
index 0000000..bfc980c
--- /dev/null
+++ b/test/test_parser.ml
@@ -0,0 +1,38 @@
+open Alcotest
+open Fixgen
+
+let parse (s : string) =
+ let lexbuf = Lexing.from_string s in
+ let ast = Parser.prog Lexer.read lexbuf in
+ ast
+
+
+let test_parse s () =
+ let ast = parse s in
+ check bool "Parses" (Option.is_some ast) true
+
+
+let table_suite =
+ [ "Can use underscore for table names", `Quick, test_parse "user_all: name uuidv4" ]
+
+
+let rows_suite =
+ [ "Can parse uuidv4", `Quick, test_parse "user: id uuidv4"
+ ; ( "Can parse multiple tables"
+ , `Quick
+ , test_parse "user: id uuidv4\npurchases: id uuidv4" )
+ ; "Resolves conflicting names", `Quick, test_parse "purchases: name uuidv4"
+ ]
+
+
+let relations_suite =
+ [ ( "Can reference other tables"
+ , `Quick
+ , test_parse "user: id uuidv4\npurchases: id uuidv4, user_id user.id" )
+ ]
+
+
+let () =
+ Alcotest.run
+ "Parsing"
+ [ "Tables", table_suite; "Rows", rows_suite; "Relations", relations_suite ]