Skip to content

Commit 368e50d

Browse files
committed
Added quickcheck test for nonEmpty
1 parent 56d4522 commit 368e50d

File tree

1 file changed

+26
-11
lines changed

1 file changed

+26
-11
lines changed

test/Test/Main.purs

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
module Test.Main where
22

33
import Prelude
4+
import Data.List as L
45
import Data.StrMap as SM
56
import Control.Monad.Eff.Console (log, logShow)
67
import Data.Argonaut.Core (JObject, Json, toObject, fromObject, fromArray, fromString, fromNumber, fromBoolean, jsonNull)
7-
import Data.Argonaut.Decode (decodeJson)
8-
import Data.Argonaut.Encode (encodeJson, gEncodeJson, (:=), (~>))
8+
import Data.Argonaut.Decode (class DecodeJson, decodeJson)
9+
import Data.Argonaut.Encode (class EncodeJson, encodeJson, gEncodeJson, (:=), (~>))
910
import Data.Array (zipWith, nubBy, length)
1011
import Data.Either (Either(..))
1112
import Data.Foldable (foldl)
1213
import Data.Function (on)
1314
import Data.Generic (class Generic)
1415
import Data.List (List, fromFoldable, singleton)
15-
import Data.List as L
1616
import Data.Maybe (Maybe(..), maybe, isJust)
1717
import Data.NonEmpty (NonEmpty(..), (:|))
18-
import Data.Tuple (Tuple(..), fst)
19-
import Test.StrongCheck (SC, quickCheck, quickCheck', (<?>))
18+
import Data.Tuple (Tuple(..), fst, snd)
19+
import Test.StrongCheck (SC, quickCheck, quickCheck', (<?>), Result)
2020
import Test.StrongCheck.Arbitrary (class Arbitrary, arbitrary)
2121
import Test.StrongCheck.Data.AlphaNumString (AlphaNumString(..))
2222
import Test.StrongCheck.Gen (Gen, Size, showSample, sized, frequency, oneOf, vectorOf)
2323

2424
main :: SC () Unit
2525
main = do
26+
nonEmptyCheck
2627
eitherCheck
2728
encodeDecodeCheck
2829
combinatorsCheck
@@ -194,9 +195,23 @@ eitherCheck :: SC () Unit
194195
eitherCheck = do
195196
log "Test EncodeJson/DecodeJson Either instance"
196197
quickCheck \(x :: Either String String) ->
197-
case decodeJson (encodeJson x) of
198-
Right decoded ->
199-
decoded == x
200-
<?> ("x = " <> show x <> ", decoded = " <> show decoded)
201-
Left err ->
202-
false <?> err
198+
encodeThenDecodeEqual x
199+
200+
encodeThenDecodeEqual :: forall a. (Eq a, Show a, EncodeJson a, DecodeJson a) => a -> Result
201+
encodeThenDecodeEqual v = do
202+
case decodeJson (encodeJson v) of
203+
Right decoded ->
204+
decoded == v
205+
<?> ("v = " <> show v <> ", decoded = " <> show decoded)
206+
Left err ->
207+
false <?> err
208+
209+
nonEmptyCheck :: SC () Unit
210+
nonEmptyCheck = do
211+
log "Test EncodeJson/DecodeJson NonEmpty Array and NonEmpty List"
212+
quickCheck \(x :: Tuple String (Array String)) -> do
213+
let ne = fst x :| snd x
214+
encodeThenDecodeEqual ne
215+
quickCheck \(x :: Tuple String (List String)) -> do
216+
let ne = fst x :| snd x
217+
encodeThenDecodeEqual ne

0 commit comments

Comments
 (0)