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 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" ; "Supports names", `Quick, test_parse "purchases: name _name" ] let relations_suite = [ ( "Can reference other tables" , `Quick , test_parse "user: id _uuidv4\npurchases: id _uuidv4, userid user.id" ) ; ( "Can use ; as a separator" , `Quick , test_parse "user: id _uuidv4; purchases: id _uuidv4" ) ; ( "Supports multiple newlines" , `Quick , test_parse "user: id _uuidv4\n\n\n\n\npurchases: id _uuidv4" ) ] let () = Alcotest.run "Parsing" [ "Rows", rows_suite; "Relations", relations_suite ]