1
0
Fork 0
This repository has been archived on 2024-05-03. You can view files and clone it, but cannot push or open issues or pull requests.
unification-pfa/test/test_projet_pfa_23_24.ml
2024-03-11 15:18:02 +01:00

32 lines
817 B
OCaml

open TypeInference
let tests_typeof =
(* TODO: add more tests *)
let x = Identifier.fresh () in
let y = Identifier.fresh () in
[ "0", Term.IntConst 0, Some Type.Int
; ( "fun x -> fun y -> x+y"
, Term.(Fun (x, Fun (y, Binop (Var x, Plus, Var y))))
, Some Type.(Arrow (Int, Arrow (Int, Int))) )
]
;;
let typeModule = (module Type : Alcotest.TESTABLE with type t = Type.t)
let check_typeof term_text term expected_type =
let open Alcotest in
test_case term_text `Quick (fun () ->
check (option typeModule) "Same type" expected_type (Inference.typeof term))
;;
let () =
let open Alcotest in
run
"Inference"
[ ( "typeof"
, List.map
(fun (term_text, term, expected_type) ->
check_typeof term_text term expected_type)
tests_typeof )
]
;;