Add testing
This commit is contained in:
parent
83b2039262
commit
e1d1d3ef0c
1 changed files with 22 additions and 3 deletions
|
@ -1,13 +1,32 @@
|
||||||
open TypeInference
|
open TypeInference
|
||||||
|
|
||||||
let tests_typeof =
|
let tests_typeof =
|
||||||
(* TODO: add more tests *)
|
|
||||||
let x = Identifier.fresh () in
|
let x = Identifier.fresh () in
|
||||||
let y = Identifier.fresh () in
|
let y = Identifier.fresh () in
|
||||||
[ "0", Term.IntConst 0, Some Type.Int
|
[ (* Int Const *)
|
||||||
; ( "fun x -> fun y -> x+y"
|
"0", Term.IntConst 0, Some Type.Int
|
||||||
|
; (* Correct function *)
|
||||||
|
( "fun x -> fun y -> x + y"
|
||||||
, Term.(Fun (x, Fun (y, Binop (Var x, Plus, Var y))))
|
, Term.(Fun (x, Fun (y, Binop (Var x, Plus, Var y))))
|
||||||
, Some Type.(Arrow (Int, Arrow (Int, Int))) )
|
, Some Type.(Arrow (Int, Arrow (Int, Int))) )
|
||||||
|
; (* Not typed variable *)
|
||||||
|
"x", Var "x", None
|
||||||
|
; (* Operation *)
|
||||||
|
"1 + 2", Binop (IntConst 1, Plus, IntConst 2), Some Int
|
||||||
|
; (* Pair *)
|
||||||
|
"(1, 2)", Pair (IntConst 1, IntConst 2), Some (Product (Int, Int))
|
||||||
|
; (* Projection with first *)
|
||||||
|
"fst (1, 2)", Proj (First, Pair (IntConst 1, IntConst 2)), Some Int
|
||||||
|
; (* Projection with second *)
|
||||||
|
"snd (1, 2)", Proj (Second, Pair (IntConst 1, IntConst 2)), Some Int
|
||||||
|
; (* Apply (int) into (fun : int -> int) *)
|
||||||
|
( "(fun x -> x + 1) 5"
|
||||||
|
, App (Fun (x, Binop (Var x, Plus, IntConst 1)), IntConst 5)
|
||||||
|
, Some Type.Int )
|
||||||
|
; (* Apply product (int * int) into a not compatible function (fun : int -> int) *)
|
||||||
|
( "(fun x -> x + 1) (1, 2)"
|
||||||
|
, App (Fun (x, Binop (Var x, Plus, IntConst 1)), Pair (IntConst 1, IntConst 2))
|
||||||
|
, None )
|
||||||
]
|
]
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
Reference in a new issue