# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/). Note that since `quickcheck-classes` reexports larges parts of `quickcheck-classes-base`, changelog entries that deal with any of the classes from `base` are duplicated across the two changelogs. ## [0.6.5.0] - 2021-04-12 ### Added - Laws for `abs` and `signum` - Storable Set-Set Law (resolves issue 101). - Add laws for `quotRem` and `divMod`. - Use non-commutative monoid for bifoldable tests (resolves issue 98) - `substitutiveEqLaws`, which tests for Eq substitutivity. - Negation law check for `Eq`. - Document that users can provide their own `Laws`. ## [0.6.4.0] - 2019-09-13 ### Changed - Use newer semirings ## [0.6.3.0] - 2019-08-08 ### Added - `gcdDomainLaws` - `euclideanLaws` ### Changed - Replaces 0.6.2.2. That release should have been a minor version bump since it added new features. - Support `primitive-0.6.4.0`. - Extend `semiringLaws` to cover `fromNatural` - Factor out a subset of laws tests into `quickcheck-classes-base` and depend on this library. ## [0.6.2.2] - 2019-06-18 ### Added - `numLaws` - `bitraversableLaws` ## [0.6.2.1] - 2019-05-23 ### Fixed - Removal of BadList test that was causing the test suite to fail ## [0.6.2.0] - 2019-05-23 ### Added - `ixLaws` - `contravariantLaws` - `semigroupMonoidLaws` ### Changed - extend `mvectorLaws` - extend `applyLaws` to include associativity ### Fixed - bug in `foldableLaws` which could fail to catch implementations of `foldMap` or `fold` that evaluate in the wrong order ## [0.6.1.0] - 2019-01-12 ### Change - `genericLaws` and `generic1Laws` were not exported. Now they are. ### Added - Add `muvectorLaws`. ## [0.6.0.0] - 2018-12-24 ### Change - Support QuickCheck 2.7 and 2.8. This adds `Arbitrary` orphan instances to the test suite. - Fix CPP that caused build failures on GHC 7.10 and some old package versions. - Fix compiling the test suite without semigroupoids and compiling with old versions of transformers. - Add lower bound for semigroups to make sure the `stimes` method is available. - The laws `commutativeSemigroupLaws` and `commutativeMonoidLaws` no longer check any property other than commutativity. They must now be used in conjunction with, rather than in place of, `semigroupLaws` and `monoidLaws`. This is a breaking change. - Fix the right distribution law for semirings. - The function `lawsCheckMany` now terminates with exit code 1 if a test fails. - Extend `showReadLaws` with new properties for `showsPrec`, `readsPrec`, `showList` and `readList`. - Prettify JSON partial isomorphism test failure. ### Added - Add `genericLaws` and `generic1Laws` - Add property tests for special classes of semigroups. This includes: commutative, idempotent, rectangular band, and exponential. - `bifoldableLaws`, `bifoldableFunctorLaws` - Add `showLaws`. ## [0.5.0.0] - 2018-09-25 ### Change - When compiling with GHC 8.6 and newer, use `QuantifiedConstraints` instead of `Eq1`, `Show1`, `Arbitrary1`, `Eq2`, `Show`, and `Arbitrary2`. ## [0.4.14.3] - 2018-09-21 ### Change - Fix a CPP conditional import problem that caused build failures on GHC 7.10 - Set an explicit lower bound for containers ## [0.4.14.2] - 2018-09-12 ### Change - Support QuickCheck-2.12 - Fix compilation for containers<0.5.9 - Fix compilation with QuickCheck-2.9 ## [0.4.14.1] - 2018-07-24 ### Change - Build correctly when dependency on semigroupoids is disabled. ## [0.4.14] - 2018-07-23 ### Added - commutativeSemigroupLaws - the following typeclasses: `Data.Semigroupoid.Semigroupoid` (semigroupoids) `Data.Functor.Plus.Plus` (semigroupoids) ### Change - semiringLaws were never exported, we now export them. - make documentation for `MonadPlus` and `Alternative` consistent. - bump semirings to 0.2.0.0 - deprecate `Test.QuickCheck.Classes.specialisedLawsCheckMany` in favour of `Test.QuickCheck.Classes.lawsCheckOne` ## [0.4.13] - 2018-07-18 ### Added - Laws for `Enum` typeclass. - Laws for `Category` typeclass. ## [0.4.12] - 2018-06-07 ### Added - Remaining laws for `Storable` typeclass. - Laws for `Prim` typeclass requiring `setByteArray` and `setOffAddr` to match the behavior that would result from manually iterating over the array and writing the value element-by-element. ### Change - Correct the law from the `Bits` typeclass that relates `clearBit` and `zeroBits`. - Limit the size of the lists that are used when testing that `mconcat` and `sconcat` have behaviors that match their default implementations. For some data structures, concatenating the elements in a list of several dozen arbitrary values does not finish in a reasonable amount of time. So, the size of these has been limited to 6. - Make library build against `primitive-0.6.1.0`. ## [0.4.11.1] - 2018-05-25 ### Change - Fix compatibility with older GHCs when `semigroupoids` support is disabled. ## [0.4.11] - 2018-05-24 ### Added - Greatly improved documentation - `specialisedLawsCheckMany` function, a shorter way for the user to use `lawsCheckMany` on a single type. ### Change - Some internal names, making it more clear what it is that they do. ## [0.4.10] - 2018-05-03 ### Added - Property tests for `mconcat`, `sconcat`, and `stimes`. It isn't common to override the defaults for these, but when you do, it's nice to check that they agree with what they are supposed to do. ## [0.4.9] - 2018-04-06 ### Change - Be more careful with import of `Data.Primitive`. There is a branch of `primitive` that adds `PrimArray`. The implementation of `PrimArray` in this library should eventually be removed, but for now it will be sufficient to ensure that it does not create a conflicting import problem with the one in the branch. ## [0.4.8] - 2018-03-29 ### Change - Fix compilation regression for older versions of transformers. ## [0.4.7] - 2018-03-29 ### Change - Split up monolithic module into hidden internal modules. - Fix compilation regression for older GHCs. ## [0.4.6] - 2018-03-29 ### Added - Property test the naturality law for `MonadZip`. There is another law that instances should satisfy (the Information Preservation law), but it's more difficult to write a test for. It has been omitted for now. - Property tests for all `MonadPlus` laws. - Several additional property tests for list-like containers: mapMaybe, replicate, filter. ## [0.4.5] - 2018-03-26 ### Added - Property tests for list-like containers that have `IsList` instances. These are useful for things that are nearly `Foldable` or nearly `Traversable` but are either constrained in their element type or totally monomorphic in it. ## [0.4.4] - 2018-03-23 ### Added - Cabal flags for controlling whether or not `aeson` and `semigroupoids` are used. These are mostly provided to accelerate builds `primitive`'s test suite. ## [0.4.3] - 2018-03-23 ### Added - Property tests for `foldl1` and `foldr1`. - Property tests for `Traversable`. ## [0.4.2] - 2018-03-22 ### Changed - Made compatible with `transformers-0.3`. Tests for higher-kinded typeclasses are unavailable when built with a sufficiently old version of both `transformers` and `base`. This is because `Eq1` and `Show1` are unavailable in this situation. ## [0.4.1] - 2018-03-21 ### Changed - Made compatible with `transformers-0.4`. ## [0.4.0] - 2018-03-20 ### Added - Property tests for `Bifunctor` and `Alternative`. ### Changed - Made compatible with older GHCs all the way back to 7.8.4. - Lower dependency footprint. Eliminate the dependency on `prim-array` and inline the relevant functions and types from it into `Test.QuickCheck.Classes`. None of these are exported.