aboutsummaryrefslogtreecommitdiff
path: root/lib/tools
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tools')
0 files changed, 0 insertions, 0 deletions
d='n59' href='#n59'>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