Skip to content

Commit 2b3133b

Browse files
committed
Add roundtrip record encoding tests
1 parent 2619e30 commit 2b3133b

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

test/Test/Main.purs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,44 @@ import Data.Tuple (Tuple(..))
1717
import Effect (Effect)
1818
import Foreign.Object as FO
1919
import Test.QuickCheck (Result(..), (<?>), (===))
20+
import Test.QuickCheck.Arbitrary (arbitrary)
2021
import Test.QuickCheck.Gen (Gen, resize, suchThat)
2122
import Test.Unit (TestSuite, test, suite, failure)
2223
import Test.Unit.Assert as Assert
2324
import Test.Unit.Main (runTest)
2425
import Test.Unit.QuickCheck (quickCheck)
2526

27+
2628
main :: Effect Unit
2729
main = 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+
3358
genTestJson :: Gen Json
3459
genTestJson = resize 5 genJson
3560

0 commit comments

Comments
 (0)