summaryrefslogtreecommitdiff
path: root/src/test/test.ml
blob: eed0befccaf99ee2dbfd626e08410fedc3f6479c (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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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
        ()
            (*
        (Printf.fprintf stdout "%s : %s OK \n%!"
           line
           expected)
           *)
      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)"
  ; "aiment",       "Em°(t)"
  ; "anniversaire", "anivERsER°"
  ; "anta",         "@ta"
  ; "anneaux",      "ano(s)"
  ; "arachide",     "aRaSid°"
  ; "as",           "a(s)"
  ; "asia",         "azia"
  ; "astiqué",      "astike"
  ; "autruche",     "otRyS°"
  ; "besoin",       "b°zw5"
  ; "beaumont",     "bom§(t)"
  ; "bisoux",       "bizu(s)"
  ; "casait",       "kazE(t)"
  ; "cassait",      "kasE(t)"
  ; "célibat",      "seLiba(t)"
  ; "chanci",       "S@si"
  ; "chat",         "Sa(t)"
  ; "chipant",      "Sip@(t)"
  ; "co|incidant",  "ko5sid@(t)"
  ; "croire",       "kR[wa]R°"
  ; "ébrouas",      "ebRua(s)"
  ; "em|magasinais","@magazinE(s)"
  ; "extra",        "EkstRa"
  ; "famille",      "famij°"
  ; "loin",         "Lw5"
  ; "groin",        "gR[w5]"
  ; "hirondelle",   "iR§dEL°"
  ; "joues",        "Zu°(s)"
  ; "libellule",    "LibELyL°"
  ; "main",         "m5"
  ; "merci",        "mERsi"
  ; "ménageais",    "menaZE(s)"
  ; "neige",        "nEZ°"
  ; "neuf",         "n9f"
  ; "nerf",         "nE(R)"
  ; "pacha",        "paSa"
  ; "péché",        "peSe"
  ; "persai",       "pERsE"
  ; "personne",     "pERson°"
  ; "plan",         "pL@"
  ; "plat",         "pLa(t)"
  ; "platte",       "pLat°"
  ; "soin",         "sw5"
  ; "souris",       "suRi(s)"
  ; "toiture",      "twatyR°"
  ; "trois",        "tR[wa](s)"
  ; "veillons",     "vEj§(s)"
  ; "vil|le",       "viLL°"
  ; "wèb",          "wEb"
  ]

let () =
  let () = List.iter tests
      ~f:(fun (input, expected) ->
          repeat (Lexing.from_string input) expected)
  in

  exit !error