packages feed

monoidmap 0.0.1.0 → 0.0.1.1

raw patch · 4 files changed

+62/−30 lines, 4 filesdep ~nothunksdep ~pretty-showPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: nothunks, pretty-show

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,3 +1,7 @@+# 0.0.1.1++- Updated version bounds for dependencies.+ # 0.0.1.0  - Added support for GHC 9.8.
monoidmap.cabal view
@@ -1,6 +1,6 @@ cabal-version:  3.0 name:           monoidmap-version:        0.0.1.0+version:        0.0.1.1 bug-reports:    https://github.com/jonathanknowles/monoidmap/issues license:        Apache-2.0 license-file:   LICENSE@@ -31,9 +31,9 @@ common dependency-nonempty-containers     build-depends:nonempty-containers           >= 0.3.4.4    && < 0.4 common dependency-nothunks-    build-depends:nothunks                      >= 0.1.3      && < 0.2+    build-depends:nothunks                      >= 0.1.3      && < 0.3 common dependency-pretty-show-    build-depends:pretty-show                   >= 1.10       && < 1.20+    build-depends:pretty-show                   >= 1.10       && < 1.11 common dependency-QuickCheck     build-depends:QuickCheck                    >= 2.14.2     && < 2.15 common dependency-quickcheck-classes@@ -174,6 +174,7 @@         Data.MonoidMap.ValiditySpec         Examples.MultiMapSpec         Examples.RecoveredMapSpec+        Test.Combinators.NonZero         Test.Common         Test.QuickCheck.Classes.Hspec         Test.Hspec.Unit
src/test/Data/MonoidMap/ClassSpec.hs view
@@ -9,10 +9,6 @@  import Prelude -import Data.Group-    ( Group )-import Data.Maybe-    ( mapMaybe ) import Data.Monoid     ( Product (..), Sum (..) ) import Data.Monoid.Null@@ -21,8 +17,6 @@     ( MonoidMap ) import Data.Proxy     ( Proxy (..) )-import Data.Semigroup.Cancellative-    ( Commutative ) import Data.Set     ( Set ) import Data.Typeable@@ -33,8 +27,10 @@     ( Natural ) import Test.Hspec     ( Spec, describe )+import Test.Combinators.NonZero+    ( NonZero, genNonZero, shrinkNonZero ) import Test.QuickCheck-    ( Arbitrary (..), listOf, scale, shrinkMapBy, suchThatMap )+    ( Arbitrary (..), listOf, scale, shrinkMapBy ) import Test.QuickCheck.Classes     ( eqLaws     , isListLaws@@ -157,7 +153,10 @@             , semigroupMonoidLaws             , showReadLaws             ]-        testLawsMany @(MonoidMap k (Wrapped (Product Rational)))+        -- Here we restrict the generator and shrinker so that they can never+        -- produce zero values, to avoid running into cases of ArithException+        -- caused by operations that may produce zero demoninators:+        testLawsMany @(MonoidMap k (NonZero (Product Rational)))             [ commutativeLaws             , eqLaws             , groupLaws@@ -340,16 +339,9 @@ -- Arbitrary instances -------------------------------------------------------------------------------- -newtype Wrapped a = Wrapped a-    deriving newtype (Eq, Num, Read, Show, IsList)-    deriving newtype (Semigroup, Commutative, Monoid, MonoidNull, Group)--instance Arbitrary (Wrapped (Product Rational)) where-    -- Here we restrict the generator and shrinker so that they can never-    -- produce zero values, to avoid running into cases of ArithException-    -- caused by operations that may produce zero demoninators:-    arbitrary = Wrapped <$> suchThatMap arbitrary maybeNonZero-    shrink = mapMaybe maybeNonZero . shrink+instance (Arbitrary a, Eq a, Num a) => Arbitrary (NonZero a) where+    arbitrary = genNonZero arbitrary+    shrink = shrinkNonZero shrink  instance (Arbitrary k, Ord k, Arbitrary v, MonoidNull v) =>     Arbitrary (MonoidMap k v)@@ -358,12 +350,3 @@         fromList <$> scale (`mod` 16) (listOf ((,) <$> arbitrary <*> arbitrary))     shrink =         shrinkMapBy MonoidMap.fromMap MonoidMap.toMap shrink------------------------------------------------------------------------------------- Utilities-----------------------------------------------------------------------------------maybeNonZero :: (Eq a, Num a) => a -> Maybe a-maybeNonZero p-    | p == 0 = Nothing-    | otherwise = Just p
+ src/test/Test/Combinators/NonZero.hs view
@@ -0,0 +1,44 @@+-- |+-- Copyright: © 2022–2024 Jonathan Knowles+-- License: Apache-2.0+--+module Test.Combinators.NonZero+    ( NonZero+    , genNonZero+    , getNonZero+    , maybeNonZero+    , shrinkNonZero+    )+    where++import Prelude++import Data.Group+    ( Group )+import Data.Maybe+    ( mapMaybe )+import Data.Monoid.Null+    ( MonoidNull )+import Data.Semigroup.Cancellative+    ( Commutative )+import Test.QuickCheck+    ( Gen, suchThatMap )++-- | A combinator for non-zero values.+newtype NonZero a = NonZero a+    deriving newtype (Eq, Num, Read, Show)+    deriving newtype (Semigroup, Commutative, Monoid, MonoidNull, Group)++genNonZero :: (Eq a, Num a) => Gen a -> Gen (NonZero a)+genNonZero genA = suchThatMap genA maybeNonZero++getNonZero :: NonZero a -> a+getNonZero (NonZero a) = a++maybeNonZero :: (Eq a, Num a) => a -> Maybe (NonZero a)+maybeNonZero p+    | p == 0 = Nothing+    | otherwise = Just (NonZero p)++shrinkNonZero :: (Eq a, Num a) => (a -> [a]) -> NonZero a -> [NonZero a]+shrinkNonZero shrinkA = mapMaybe maybeNonZero . shrinkA . getNonZero