packages feed

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 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 ->