Skip to content

Commit 34ed14d

Browse files
committed
Fix & update tests
1 parent d32c8f0 commit 34ed14d

File tree

3 files changed

+20
-23
lines changed

3 files changed

+20
-23
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@
3333
"purescript-maps": "^3.0.0"
3434
},
3535
"devDependencies": {
36-
"purescript-strongcheck": "^3.0.0"
36+
"purescript-strongcheck": "^3.1.0"
3737
}
3838
}

src/Data/Argonaut/Gen.purs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module Test.StrongCheck.Data.Argonaut where
1+
module Data.Argonaut.Gen where
22

33
import Prelude
44

@@ -15,16 +15,15 @@ import Data.String as S
1515
import Data.StrMap as SM
1616

1717
genJson :: forall m. MonadGen m => MonadRec m => Lazy (m J.Json) => m J.Json
18-
genJson = Gen.sized genJson'
18+
genJson = Gen.resize (min 10) $ Gen.sized genJson'
1919
where
2020
genJson' :: Int -> m J.Json
2121
genJson' size
22-
| size > 3 =
23-
genJson' 3
24-
| size > 0 =
25-
Gen.resize (_ - 1) (Gen.choose genJArray genJObject)
26-
| otherwise =
27-
Gen.oneOf $ pure J.jsonNull :| [ genJBoolean, genJNumber, genJString]
22+
| size > 1 = Gen.resize (_ - 1) (Gen.choose genJArray genJObject)
23+
| otherwise = genLeaf
24+
25+
genLeaf :: m J.Json
26+
genLeaf = Gen.oneOf $ pure J.jsonNull :| [ genJBoolean, genJNumber, genJString]
2827

2928
genJArray :: m J.Json
3029
genJArray = J.fromArray <$> Gen.unfoldable (defer \_ -> genJson)

test/Test/Main.purs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,21 @@ import Prelude
44

55
import Control.Monad.Eff.Console (log)
66

7-
import Data.Argonaut.Core (Json, JNull, toObject, toArray, toString, toNumber, toBoolean, toNull, fromObject, foldJsonObject, fromNumber, fromArray, foldJsonArray, fromString, foldJsonString, foldJsonNumber, fromBoolean, foldJsonBoolean, fromNull, foldJsonNull, foldJson, isObject, isArray, isString, isNumber, isBoolean, isNull)
7+
import Data.Argonaut.Core (Json, JNull, toObject, toArray, toString, toNumber, toBoolean, toNull, fromObject, foldJsonObject, fromNumber, fromArray, foldJsonArray, fromString, foldJsonString, foldJsonNumber, fromBoolean, foldJsonBoolean, fromNull, foldJsonNull, foldJson, isObject, isArray, isString, isNumber, isBoolean, isNull, stringify)
88
import Data.Argonaut.Parser (jsonParser)
9-
import Data.Argonaut.Printer (printJson)
9+
import Data.Argonaut.Gen (genJson)
1010
import Data.Array as A
11-
import Data.Either (isLeft, isRight, Either(..))
12-
import Data.Foldable (for_)
11+
import Data.Either (isLeft, Either(..))
1312
import Data.Maybe (Maybe(..), fromJust)
1413
import Data.StrMap as M
1514
import Data.Tuple (Tuple(..))
1615

16+
import Control.Monad.Gen as Gen
17+
1718
import Partial.Unsafe (unsafePartial)
1819

19-
import Test.StrongCheck (SC, assert, (<?>), quickCheck, Result())
20+
import Test.StrongCheck (SC, (===), (<?>), assert, quickCheck, quickCheck', Result)
21+
import Test.StrongCheck.Gen (Gen)
2022

2123
foreign import thisIsNull :: Json
2224
foreign import thisIsBoolean :: Json
@@ -122,15 +124,13 @@ toTest = do
122124

123125
parserTest :: SC () Unit
124126
parserTest = do
125-
assert ((isRight (jsonParser "{\"foo\": 1}")) <?> "Error in jsonParser")
126127
assert ((isLeft (jsonParser "\\\ffff")) <?> "Error in jsonParser")
127-
128-
printJsonTest :: SC () Unit
129-
printJsonTest = do
130-
for_ cases (assert <<< assertion)
128+
quickCheck' 10 roundtripTest
131129
where
132-
assertion :: Json -> Result
133-
assertion j = ((jsonParser (printJson j)) == Right j) <?> "Error in printJson"
130+
roundtripTest :: Gen Result
131+
roundtripTest = do
132+
json <- Gen.resize (const 5) genJson
133+
pure $ jsonParser (stringify json) === Right json
134134

135135
main :: SC () Unit
136136
main = do
@@ -146,5 +146,3 @@ main = do
146146
toTest
147147
log "jsonParser tests"
148148
parserTest
149-
log "printJson tests"
150-
printJsonTest

0 commit comments

Comments
 (0)