genvalidity-containers 1.0.0.1 → 1.0.0.2
raw patch · 10 files changed
+65/−13 lines, 10 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Data.GenValidity.IntMap: genIntMapOf :: Gen (Int, v) -> Gen (IntMap v)
+ Data.GenValidity.IntMap: instance Data.GenValidity.GenValid v => Data.GenValidity.GenValid (Data.IntMap.Internal.IntMap v)
+ Data.GenValidity.IntMap: shrinkIntMapOf :: ((Int, v) -> [(Int, v)]) -> IntMap v -> [IntMap v]
Files
- CHANGELOG.md +6/−0
- genvalidity-containers.cabal +4/−2
- src/Data/GenValidity/Containers.hs +1/−0
- src/Data/GenValidity/IntMap.hs +23/−0
- src/Data/GenValidity/Map.hs +2/−2
- src/Data/GenValidity/Sequence.hs +1/−1
- src/Data/GenValidity/Set.hs +5/−5
- src/Data/GenValidity/Tree.hs +1/−1
- test/Data/GenValidity/Containers/IntMapSpec.hs +18/−0
- test/Data/GenValidity/Containers/SetSpec.hs +4/−2
CHANGELOG.md view
@@ -1,5 +1,11 @@ # Changelog +## [1.0.0.2] - 2022-08-30++### Added++* `GenValid a => GenValid (IntMap a)`+ ## [1.0.0.1] - 2022-08-30 ### Added
genvalidity-containers.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.34.7.+-- This file has been generated from package.yaml by hpack version 0.36.0. -- -- see: https://github.com/sol/hpack name: genvalidity-containers-version: 1.0.0.1+version: 1.0.0.2 synopsis: GenValidity support for containers category: Testing homepage: https://github.com/NorfairKing/validity#readme@@ -27,6 +27,7 @@ library exposed-modules: Data.GenValidity.Containers+ Data.GenValidity.IntMap Data.GenValidity.Map Data.GenValidity.Sequence Data.GenValidity.Set@@ -48,6 +49,7 @@ type: exitcode-stdio-1.0 main-is: Spec.hs other-modules:+ Data.GenValidity.Containers.IntMapSpec Data.GenValidity.Containers.MapSpec Data.GenValidity.Containers.SeqSpec Data.GenValidity.Containers.SetSpec
src/Data/GenValidity/Containers.hs view
@@ -3,6 +3,7 @@ ) where +import Data.GenValidity.IntMap as Containers import Data.GenValidity.Map as Containers import Data.GenValidity.Sequence as Containers import Data.GenValidity.Set as Containers
+ src/Data/GenValidity/IntMap.hs view
@@ -0,0 +1,23 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}++module Data.GenValidity.IntMap+ ( genIntMapOf,+ shrinkIntMapOf,+ )+where++import Data.GenValidity+import Data.IntMap (IntMap)+import qualified Data.IntMap as M+import Data.Validity.IntMap ()+import Test.QuickCheck++instance (GenValid v) => GenValid (IntMap v) where+ genValid = genIntMapOf genValid+ shrinkValid = shrinkIntMapOf shrinkValid++genIntMapOf :: Gen (Int, v) -> Gen (IntMap v)+genIntMapOf g = M.fromList <$> genListOf g++shrinkIntMapOf :: ((Int, v) -> [(Int, v)]) -> IntMap v -> [IntMap v]+shrinkIntMapOf shrinker = fmap M.fromList . shrinkList shrinker . M.toList
src/Data/GenValidity/Map.hs view
@@ -16,8 +16,8 @@ genValid = genMapOf genValid shrinkValid = shrinkMapOf shrinkValid -genMapOf :: Ord k => Gen (k, v) -> Gen (Map k v)+genMapOf :: (Ord k) => Gen (k, v) -> Gen (Map k v) genMapOf g = M.fromList <$> genListOf g -shrinkMapOf :: Ord k => ((k, v) -> [(k, v)]) -> Map k v -> [Map k v]+shrinkMapOf :: (Ord k) => ((k, v) -> [(k, v)]) -> Map k v -> [Map k v] shrinkMapOf shrinker = fmap M.fromList . shrinkList shrinker . M.toList
src/Data/GenValidity/Sequence.hs view
@@ -13,7 +13,7 @@ import Data.Validity.Sequence () import Test.QuickCheck -instance GenValid v => GenValid (Seq v) where+instance (GenValid v) => GenValid (Seq v) where genValid = genSeqOf genValid shrinkValid = shrinkSeqOf shrinkValid
src/Data/GenValidity/Set.hs view
@@ -24,10 +24,10 @@ genValid = genSetOf genValid shrinkValid = shrinkSetOf shrinkValid -genSetOf :: Ord v => Gen v -> Gen (Set v)+genSetOf :: (Ord v) => Gen v -> Gen (Set v) genSetOf g = S.fromList <$> genListOf g -shrinkSetOf :: Ord v => (v -> [v]) -> Set v -> [Set v]+shrinkSetOf :: (Ord v) => (v -> [v]) -> Set v -> [Set v] shrinkSetOf shrinker = fmap S.fromList . shrinkList shrinker . S.toList genValidSeperateFor :: (GenValid b, Eq b) => [a] -> Gen [(b, a)]@@ -36,15 +36,15 @@ genValidSeperateForNE :: (GenValid b, Eq b) => NonEmpty a -> Gen (NonEmpty (b, a)) genValidSeperateForNE = genSeperateForNE genValid -genSeperate :: Ord a => Gen a -> Gen [a]+genSeperate :: (Ord a) => Gen a -> Gen [a] genSeperate g = nubOrd <$> genListOf g -- TODO these two can likely be optimised-genSeperateFor :: Eq b => Gen b -> [a] -> Gen [(b, a)]+genSeperateFor :: (Eq b) => Gen b -> [a] -> Gen [(b, a)] genSeperateFor _ [] = pure [] genSeperateFor g (a : as) = NE.toList <$> genSeperateForNE g (a :| as) -genSeperateForNE :: Eq b => Gen b -> NonEmpty a -> Gen (NonEmpty (b, a))+genSeperateForNE :: (Eq b) => Gen b -> NonEmpty a -> Gen (NonEmpty (b, a)) genSeperateForNE g (a :| as) = do restTups <- genSeperateFor g as b <- g `suchThat` (`notElem` map fst restTups)
src/Data/GenValidity/Tree.hs view
@@ -9,7 +9,7 @@ import Data.Validity.Tree () import Test.QuickCheck -instance GenValid a => GenValid (Tree a) where+instance (GenValid a) => GenValid (Tree a) where genValid = genTreeOf genValid shrinkValid = shrinkTreeOf shrinkValid
+ test/Data/GenValidity/Containers/IntMapSpec.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE TypeApplications #-}++module Data.GenValidity.Containers.IntMapSpec where++import Data.GenValidity+import Data.GenValidity.IntMap+import Data.IntMap (IntMap)+import Test.Hspec+import Test.Validity.GenValidity++spec :: Spec+spec = do+ describe "genIntMapOf" $+ it "produces valid maps" $+ genGeneratesValid+ (genIntMapOf @Rational genValid)+ genValidSpec @(IntMap Rational)+ genValidSpec @(IntMap Rational)
test/Data/GenValidity/Containers/SetSpec.hs view
@@ -20,9 +20,11 @@ genValidSpec @(Set Rational) describe "genSeperate" $ do it "generates values that are seperate" $- forAll (genSeperate genValid) $ \ls -> distinctOrd (ls :: [Int])+ forAll (genSeperate genValid) $+ \ls -> distinctOrd (ls :: [Int]) it "generates values that are seperate" $- forAll (genSeperate genValid) $ \ls -> distinctOrd (ls :: [Int])+ forAll (genSeperate genValid) $+ \ls -> distinctOrd (ls :: [Int]) describe "genSeperateFor" $ do it "generates values that are seperate" $ forAllValid $ \ls ->