Skip to content

Commit 072cff7

Browse files
committed
Add generators for JArray and JObject
1 parent eb6666a commit 072cff7

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

src/JSON/Gen.purs

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,36 @@ genJSON = Gen.resize (min 5) $ Gen.sized genJSON'
2323
| otherwise = genLeaf
2424

2525
-- | A generator for JSON arrays containing items based on the passed generator.
26-
genArrayOf :: forall m. MonadGen m => MonadRec m => m J.JSON -> m J.JSON
27-
genArrayOf inner = J.fromJArray <<< JArray.fromArray <$> Gen.unfoldable inner
26+
genJArrayOf :: forall m. MonadGen m => MonadRec m => m J.JSON -> m J.JArray
27+
genJArrayOf inner = JArray.fromArray <$> Gen.unfoldable inner
2828

2929
-- | A generator for JSON arrays containing random items.
30+
genJArray :: forall m. MonadGen m => MonadRec m => Lazy (m J.JSON) => m J.JArray
31+
genJArray = genJArrayOf (defer \_ -> genJSON)
32+
33+
-- | A generator for JSON vaues that are arrays containing items based on the passed generator.
34+
genArrayOf :: forall m. MonadGen m => MonadRec m => m J.JSON -> m J.JSON
35+
genArrayOf inner = J.fromJArray <$> genJArrayOf inner
36+
37+
-- | A generator for JSON vaues that are arrays containing random items.
3038
genArray :: forall m. MonadGen m => MonadRec m => Lazy (m J.JSON) => m J.JSON
31-
genArray = genArrayOf (defer \_ -> genJSON)
39+
genArray = J.fromJArray <$> genJArray
3240

3341
-- | A generator for JSON objects containing entries based on the passed generator.
34-
genObjectOf :: forall m. MonadGen m => MonadRec m => m (Tuple String J.JSON) -> m J.JSON
35-
genObjectOf inner = J.fromJObject <<< JObject.fromEntries <$> (Gen.unfoldable inner)
42+
genJObjectOf :: forall m. MonadGen m => MonadRec m => m (Tuple String J.JSON) -> m J.JObject
43+
genJObjectOf inner = JObject.fromEntries <$> (Gen.unfoldable inner)
3644

3745
-- | A generator for JSON objects containing random entries.
46+
genJObject :: forall m. MonadGen m => MonadRec m => Lazy (m J.JSON) => m J.JObject
47+
genJObject = genJObjectOf (Tuple <$> genUnicodeString <*> defer \_ -> genJSON)
48+
49+
-- | A generator for JSON values that are objects containing entries based on the passed generator.
50+
genObjectOf :: forall m. MonadGen m => MonadRec m => m (Tuple String J.JSON) -> m J.JSON
51+
genObjectOf inner = J.fromJObject <$> genJObjectOf inner
52+
53+
-- | A generator for JSON values that are objects containing random entries.
3854
genObject :: forall m. MonadGen m => MonadRec m => Lazy (m J.JSON) => m J.JSON
39-
genObject = genObjectOf (Tuple <$> genUnicodeString <*> defer \_ -> genJSON)
55+
genObject = J.fromJObject <$> genJObject
4056

4157
-- | A generator for JSON leaf (null, boolean, number, string) values.
4258
genLeaf :: forall m. MonadGen m => MonadRec m => m J.JSON

0 commit comments

Comments
 (0)