@@ -3,8 +3,12 @@ module Test.Main where
3
3
import Prelude
4
4
import Data.HeytingAlgebra (ff , tt , implies )
5
5
import Data.Ord (abs , signum )
6
+ import Data.Reflectable (reflectType , reifyType )
7
+ import Prim.Boolean (True , False )
8
+ import Prim.Ordering (LT , GT , EQ )
6
9
import Test.Data.Generic.Rep (testGenericRep )
7
10
import Test.Utils (AlmostEff , assert )
11
+ import Type.Proxy (Proxy (..))
8
12
9
13
main :: AlmostEff
10
14
main = do
@@ -15,6 +19,8 @@ main = do
15
19
testIntDegree
16
20
testRecordInstances
17
21
testGenericRep
22
+ testReflectType
23
+ testReifyType
18
24
testSignum
19
25
20
26
foreign import testNumberShow :: (Number -> String ) -> AlmostEff
@@ -153,6 +159,28 @@ testRecordInstances = do
153
159
(top :: { a :: Boolean } ).a
154
160
== top
155
161
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
+
156
184
testSignum :: AlmostEff
157
185
testSignum = do
158
186
assert " Clarifies what 'signum positive zero' test is doing" $ show (1.0 /0.0 ) == " Infinity"
0 commit comments