@@ -3,8 +3,12 @@ module Test.Main where
33import Prelude
44import Data.HeytingAlgebra (ff , tt , implies )
55import Data.Ord (abs , signum )
6+ import Data.Reflectable (reflectType , reifyType )
7+ import Prim.Boolean (True , False )
8+ import Prim.Ordering (LT , GT , EQ )
69import Test.Data.Generic.Rep (testGenericRep )
710import Test.Utils (AlmostEff , assert )
11+ import Type.Proxy (Proxy (..))
812
913main :: AlmostEff
1014main = do
@@ -15,6 +19,8 @@ main = do
1519 testIntDegree
1620 testRecordInstances
1721 testGenericRep
22+ testReflectType
23+ testReifyType
1824 testSignum
1925
2026foreign import testNumberShow :: (Number -> String ) -> AlmostEff
@@ -153,6 +159,28 @@ testRecordInstances = do
153159 (top :: { a :: Boolean } ).a
154160 == top
155161
162+ testReflectType :: AlmostEff
163+ testReflectType = do
164+ assert " reflectType: Symbol -> String" $ reflectType (Proxy :: _ " erin!" ) == " erin!"
165+ assert " reflectType: Boolean -> Boolean, True" $ reflectType (Proxy :: _ True ) == true
166+ assert " reflectType: Boolean -> Boolean, False" $ reflectType (Proxy :: _ False ) == false
167+ assert " reflectType: Ordering -> Ordering, LT" $ reflectType (Proxy :: _ LT ) == LT
168+ assert " reflectType: Ordering -> Ordering, GT" $ reflectType (Proxy :: _ GT ) == GT
169+ assert " reflectType: Ordering -> Ordering, EQ" $ reflectType (Proxy :: _ EQ ) == EQ
170+ assert " reflectType: Int -> Int, 42" $ reflectType (Proxy :: _ 42) == 42
171+ assert " reflectType: Int -> Int, -42" $ reflectType (Proxy :: _ (-42)) == -42
172+
173+ testReifyType :: AlmostEff
174+ testReifyType = do
175+ assert " reifyType: String -> Symbol" $ reifyType " erin!" reflectType == " erin!"
176+ assert " reifyType: Boolean -> Boolean, true" $ reifyType true reflectType == true
177+ assert " reifyType: Boolean -> Boolean, false" $ reifyType false reflectType == false
178+ assert " reifyType: Ordering -> Ordering, LT" $ reifyType LT reflectType == LT
179+ assert " reifyType: Ordering -> Ordering, GT" $ reifyType GT reflectType == GT
180+ assert " reifyType: Ordering -> Ordering, EQ" $ reifyType EQ reflectType == EQ
181+ assert " reifyType: Int -> Int, 42" $ reifyType 42 reflectType == 42
182+ assert " reifyType: Int -> Int, -42" $ reifyType (-42 ) reflectType == -42
183+
156184testSignum :: AlmostEff
157185testSignum = do
158186 assert " Clarifies what 'signum positive zero' test is doing" $ show (1.0 /0.0 ) == " Infinity"
0 commit comments