diff options
Diffstat (limited to 'src/test/test.ml')
-rw-r--r-- | src/test/test.ml | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/test/test.ml b/src/test/test.ml new file mode 100644 index 0000000..ca74a9e --- /dev/null +++ b/src/test/test.ml @@ -0,0 +1,66 @@ +open StdLabels + +module T = Translator +let error = ref 0 + +let process (optional_line : string option) expected = + match optional_line with + | None -> () + | Some line -> + match T.Reader.process line with + | Error result -> + error := 1; + Printf.fprintf stdout + "%s : %s\n%!" + line + result + | Ok response -> + if String.equal response expected then + () + else ( + error := 1; + (Printf.fprintf stdout "%s : got %s / %s expected\n%!" + line + response + expected) + ) + + +let rec repeat input expected = + (* Attempt to read one line. *) + let optional_line, continue = T.Lexer.line input in + process optional_line expected; + if continue then + repeat input expected + +let tests = + [ "abaca", "abaka" + ; "abaissa", "abEsa" + ; "abaissait", "abEsE(t)" + ; "abaissant", "abEs@(t)" + ; "abaissées", "abEse(s)" + ; "abaissera", "abEs°Ra" + ; "achat", "aSa(t)" + ; "astiqué", "astike" + ; "casait", "kazE(t)" + ; "cassait", "kasE(t)" + ; "chanci", "S@si" + ; "chat", "Sa(t)" + ; "chipant", "Sip@(t)" + ; "pacha", "paSa" + ; "péché", "peSe" + ; "persai", "pERse" + ; "asia", "azia" + ; "ani", "ani" + ; "anta", "@ta" + ; "plat", "pLa(t)" + ] + +let () = + let () = List.iter tests + ~f:(fun (input, expected) -> + repeat (Lexing.from_string input) expected) + in + + exit !error + |