diff --git a/tests/Tests/Equal.idr b/tests/Tests/Equal.idr index c3ef37f..bbed6a5 100644 --- a/tests/Tests/Equal.idr +++ b/tests/Tests/Equal.idr @@ -7,17 +7,17 @@ import TAP export ToInfo Equal.Error where toInfo (ClashT mode s t) = - [("clash", "term"), - ("mode", show mode), + [("clash", "term"), + ("mode", show mode), ("left", prettyStr True s), ("right", prettyStr True t)] toInfo (ClashU mode k l) = - [("clash", "universe"), - ("mode", show mode), + [("clash", "universe"), + ("mode", show mode), ("left", prettyStr True k), ("right", prettyStr True l)] toInfo (ClashQ pi rh) = - [("clash", "quantity"), + [("clash", "quantity"), ("left", prettyStr True pi), ("right", prettyStr True rh)] @@ -52,50 +52,126 @@ export tests : Test tests = "equality & subtyping" :- [ "universes" :- [ - testEq "Type 0 == Type 0" $ - equalT (TYPE (U 0)) (TYPE (U 0)), - testNeq "Type 0 =/= Type 1" $ - equalT (TYPE (U 0)) (TYPE (U 1)), - testNeq "Type 1 =/= Type 0" $ - equalT (TYPE (U 1)) (TYPE (U 0)), - testEq "Type 0 <: Type 0" $ - subT (TYPE (U 0)) (TYPE (U 0)), - testEq "Type 0 <: Type 1" $ - subT (TYPE (U 0)) (TYPE (U 1)), - testNeq "Type 1 A) a == ((a : A) : A) (β)" $ - equalE (λxx' :@ a') (E (a' :# A) :# A), - testEq "(λx. x : _) a == a (βυ)" $ - equalE (λxx' :@ a') a + + "application" :- [ + testEq "f [a] ≡ f [a]" $ + equalE (F "f" :@ FT "a") (F "f" :@ FT "a"), + testEq "f [a] <: f [a]" $ + subE (F "f" :@ FT "a") (F "f" :@ FT "a"), + testEq "(λ x ⇒ [x] ∷ A ⊸ A) a ≡ ([a ∷ A] ∷ A) (β)" $ + equalE + ((Lam "x" (TUsed (BVT 0)) :# (Arr One (FT "A") (FT "A"))) + :@ FT "a") + (E (FT "a" :# FT "A") :# FT "A"), + testEq "(λ x ⇒ [x] ∷ A ⊸ A) a ≡ a (βυ)" $ + equalE + ((Lam "x" (TUsed (BVT 0)) :# (Arr One (FT "A") (FT "A"))) + :@ FT "a") + (F "a"), + testEq "(λ x ⇒ [x] ∷ A ⊸ A) a <: a" $ + subE + ((Lam "x" (TUsed (BVT 0)) :# (Arr One (FT "A") (FT "A"))) + :@ FT "a") + (F "a") ], + todo "annotation", + todo "elim closure", + todo "elim d-closure", - todo "clashes" + "clashes" :- [ + testNeq "𝒰₀ ≢ 𝒰₀ ⇾ 𝒰₀" $ + equalT (TYPE 0) (Arr Zero (TYPE 0) (TYPE 0)), + todo "others" + ] ]