diff options
author | Marc Coquand <marc@mccd.space> | 2023-12-20 20:46:00 -0600 |
---|---|---|
committer | Marc Coquand <marc@mccd.space> | 2023-12-25 18:22:59 -0600 |
commit | 262f161f42c4e59beec41c6f440336c38385426a (patch) | |
tree | 6491c9b661a0b5a14c9a30ecf25e036f8762239d /test/test_parser.ml | |
parent | cc783c157f31e7e713c8b83be67449b1859dac27 (diff) | |
download | fixgen-262f161f42c4e59beec41c6f440336c38385426a.tar.gz fixgen-262f161f42c4e59beec41c6f440336c38385426a.tar.bz2 fixgen-262f161f42c4e59beec41c6f440336c38385426a.zip |
Initial commit
Diffstat (limited to 'test/test_parser.ml')
-rw-r--r-- | test/test_parser.ml | 38 |
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 ] |