summaryrefslogtreecommitdiff
path: root/src/test/test.ml
blob: ca74a9e002d650946cada3f67919e24b4caae35f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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