diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/ann_bloop.ml | 0 | ||||
-rw-r--r-- | test/dune | 3 | ||||
-rw-r--r-- | test/test_parser.ml | 38 |
3 files changed, 40 insertions, 1 deletions
diff --git a/test/ann_bloop.ml b/test/ann_bloop.ml deleted file mode 100644 index e69de29..0000000 --- a/test/ann_bloop.ml +++ /dev/null @@ -1,2 +1,3 @@ (test - (name ann_bloop)) + (name test_parser) + (libraries fixgen alcotest)) 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 ] |