@@ -17,19 +17,44 @@ import Data.Tuple (Tuple(..))
1717import Effect (Effect )
1818import Foreign.Object as FO
1919import Test.QuickCheck (Result (..), (<?>), (===))
20+ import Test.QuickCheck.Arbitrary (arbitrary )
2021import Test.QuickCheck.Gen (Gen , resize , suchThat )
2122import Test.Unit (TestSuite , test , suite , failure )
2223import Test.Unit.Assert as Assert
2324import Test.Unit.Main (runTest )
2425import Test.Unit.QuickCheck (quickCheck )
2526
27+
2628main :: Effect Unit
2729main = runTest do
2830 suite " Either Check" eitherCheck
2931 suite " Encode/Decode Checks" encodeDecodeCheck
32+ suite " Encode/Decode Record Checks" encodeDecodeRecordCheck
3033 suite " Combinators Checks" combinatorsCheck
3134 suite " Error Message Checks" errorMsgCheck
3235
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+
3358genTestJson :: Gen Json
3459genTestJson = resize 5 genJson
3560
0 commit comments