@@ -17,19 +17,44 @@ import Data.Tuple (Tuple(..))
17
17
import Effect (Effect )
18
18
import Foreign.Object as FO
19
19
import Test.QuickCheck (Result (..), (<?>), (===))
20
+ import Test.QuickCheck.Arbitrary (arbitrary )
20
21
import Test.QuickCheck.Gen (Gen , resize , suchThat )
21
22
import Test.Unit (TestSuite , test , suite , failure )
22
23
import Test.Unit.Assert as Assert
23
24
import Test.Unit.Main (runTest )
24
25
import Test.Unit.QuickCheck (quickCheck )
25
26
27
+
26
28
main :: Effect Unit
27
29
main = runTest do
28
30
suite " Either Check" eitherCheck
29
31
suite " Encode/Decode Checks" encodeDecodeCheck
32
+ suite " Encode/Decode Record Checks" encodeDecodeRecordCheck
30
33
suite " Combinators Checks" combinatorsCheck
31
34
suite " Error Message Checks" errorMsgCheck
32
35
36
+
37
+ genTestRecord
38
+ :: Gen (Record
39
+ ( i :: Int
40
+ , n :: Number
41
+ , s :: String
42
+ ))
43
+ genTestRecord = arbitrary
44
+
45
+ encodeDecodeRecordCheck :: TestSuite
46
+ encodeDecodeRecordCheck = do
47
+ test " Testing that any record can be encoded and then decoded" do
48
+ quickCheck rec_encode_then_decode
49
+
50
+ where
51
+ rec_encode_then_decode :: Gen Result
52
+ rec_encode_then_decode = do
53
+ rec <- genTestRecord
54
+ let redecoded = decodeJson (encodeJson rec)
55
+ pure $ Right rec == redecoded <?> (show redecoded <> " /= Right " <> show rec)
56
+
57
+
33
58
genTestJson :: Gen Json
34
59
genTestJson = resize 5 genJson
35
60
0 commit comments