genvalidity-containers 0.1.0.0 → 0.1.0.1
raw patch · 2 files changed
+14/−13 lines, 2 files
Files
- genvalidity-containers.cabal +1/−1
- src/Data/GenValidity/Tree.hs +13/−12
genvalidity-containers.cabal view
@@ -1,5 +1,5 @@ name: genvalidity-containers-version: 0.1.0.0+version: 0.1.0.1 synopsis: GenValidity support for containers description: Please see README.md homepage: https://github.com/NorfairKing/validity#readme
src/Data/GenValidity/Tree.hs view
@@ -13,21 +13,22 @@ -- | There should be at least one invalid element, either it's here or it's -- further down the tree.- genInvalid = oneof- [ Node <$> genInvalid <*> genUnchecked- , Node <$> genUnchecked <*> genInvalid- ]+ genInvalid = sized $ \n -> do+ size <- upTo n+ (a, b) <- genSplit size+ oneof+ [ Node <$> resize a genInvalid <*> resize b genUnchecked+ , Node <$> resize a genUnchecked <*> resize b genInvalid+ ] -- | Generate a tree of values that are generated as specified. -- -- This takes the size parameter much better into account genTreeOf :: Gen a -> Gen (Tree a)-genTreeOf func = sized $ \n -> -- Sized is the size of the trees.- case n of- 0 -> Node <$> func <*> pure []- 1 -> Node <$> func <*> pure []- m -> do- value <- func- forest <- resize (m - 1) $ genListOf $ genTreeOf func- return $ Node value forest+genTreeOf func = sized $ \n -> do+ size <- upTo n+ (a, b) <- genSplit size+ value <- resize a func+ forest <- resize b $ genListOf $ genTreeOf func+ return $ Node value forest