Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
cduce
cduce
Commits
a1e281b3
Commit
a1e281b3
authored
Dec 11, 2013
by
Pietro Abate
Browse files
Add new unit tests for the subtyping algorithm
parent
a2da41f0
Changes
1
Show whitespace changes
Inline
Side-by-side
tests/libtest/tests.ml
View file @
a1e281b3
...
@@ -62,12 +62,40 @@ let subtype_tests = [
...
@@ -62,12 +62,40 @@ let subtype_tests = [
"1--5"
,
"1--4"
,
false
;
"1--5"
,
"1--4"
,
false
;
"Int"
,
"0--*"
,
false
;
"Int"
,
"0--*"
,
false
;
(* polymorphic cduce extension *)
"`$X"
,
"Any"
,
true
;
"`$X"
,
"Any"
,
true
;
"`$X | Int"
,
"Any"
,
true
;
"`$X | Int"
,
"Any"
,
true
;
"Any"
,
"`$X | (Any
\\
`$X)"
,
true
;
"Any"
,
"`$X | (Any
\\
`$X)"
,
true
;
"Any"
,
"(42 & `$X) | (Any
\\
(42 & `$X))"
,
true
;
"Any"
,
"(42 & `$X) | (Any
\\
(42 & `$X))"
,
true
;
"Any"
,
"(41 & `$X) | (Any
\\
(42 & `$X))"
,
false
;
"Any"
,
"(41 & `$X) | (Any
\\
(42 & `$X))"
,
false
;
"Any"
,
"Any
\\
Char"
,
false
;
"Any"
,
"Any
\\
Char"
,
false
;
"(`$A -> Bool, `$B -> `$B)"
,
"(Int | Bool -> Int, `$A -> `$B)"
,
false
;
(* ({ (int , true) } , { }) *)
"Int -> Int"
,
"`$A -> `$A"
,
false
;
(* { (true^[ A ] , any) } *)
"Int -> Int"
,
"Empty -> Any"
,
true
;
"(`$A -> `$C) & (`$B -> `$C)"
,
"(`$A | `$B) -> `$C"
,
true
;
"((`$A -> `$C) & (`$B -> `$C))"
,
"((`$A | `$B) -> `$C)"
,
true
;
"((`$A | `$B) -> `$C)"
,
"((`$A -> `$C) & (`$B -> `$C))"
,
true
;
"(`$A -> `$B)"
,
"(Any -> Any)"
,
false
;
(* { (any , omega) } *)
"(`A , `$X)"
,
"((`A , (Any
\\
`A)) | (`$X , `A))"
,
false
;
(* (a , a^[ X ]) *)
"(`$X & (`$X , `A))"
,
"`C"
,
false
;
(* (any^[ X ] , A)^[ X ] *)
"(((`$A , `$C) -> `$D1) & ((`$B , `$C) -> `$D2))"
,
"(((`$A | `$B) , `$C) -> (`$D1 | `$D2))"
,
true
;
"(`$A & (`$A , `T))"
,
"`$A"
,
true
;
"(Any -> Empty)"
,
"(`$A -> `$B)"
,
true
;
"(`$A -> `$B)"
,
"(Empty -> Any)"
,
true
;
"(`$B & `$A) | (`$B & (Any
\\
`$A))"
,
"`$B"
,
true
;
"`$B"
,
"(`$B & `$A) | (`$B & (Any
\\
`$A))"
,
true
;
"Any"
,
"(Any
\\
(Any
\\
((`$B & `$A) | (`$B & (Any
\\
`$A))) | Empty) | (Any
\\
(`$B | Empty)))"
,
true
;
"(`$A & (`$A , `T))"
,
"(`T1 -> `T2)"
,
false
;
(* (any^[ A ] , t)^[ A ] *)
"(x where x = (`$A & ((`$A , x) | `nil)))"
,
"Empty"
,
false
;
(* nil^[ A ] *)
"(Any
\\
(`$A -> `$B))"
,
"((Any -> Empty) -> `$B)"
,
false
;
];;
];;
let
test_subtype
=
let
test_subtype
=
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment