quickcheck-dynamic 3.0.1 → 3.0.2
raw patch · 5 files changed
+21/−6 lines, 5 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Test.QuickCheck.StateModel.Variables: data HasNoVariables a
+ Test.QuickCheck.StateModel.Variables: HasNoVariables :: a -> HasNoVariables a
+ Test.QuickCheck.StateModel.Variables: instance Test.QuickCheck.StateModel.Variables.HasVariables GHC.Word.Word16
+ Test.QuickCheck.StateModel.Variables: instance Test.QuickCheck.StateModel.Variables.HasVariables GHC.Word.Word32
+ Test.QuickCheck.StateModel.Variables: instance Test.QuickCheck.StateModel.Variables.HasVariables GHC.Word.Word64
+ Test.QuickCheck.StateModel.Variables: instance Test.QuickCheck.StateModel.Variables.HasVariables GHC.Word.Word8
+ Test.QuickCheck.StateModel.Variables: newtype HasNoVariables a
+ Test.QuickCheck.StateModel.Variables: unsafeNextVarIndex :: VarContext -> Int
- Test.QuickCheck.DynamicLogic: forAllUniqueDL :: (DynLogicModel s, Testable a) => Int -> Annotated s -> DL s () -> (Actions s -> a) -> Property
+ Test.QuickCheck.DynamicLogic: forAllUniqueDL :: (DynLogicModel s, Testable a) => Annotated s -> DL s () -> (Actions s -> a) -> Property
- Test.QuickCheck.DynamicLogic.Internal: forAllUniqueScripts :: (DynLogicModel s, Testable a) => Int -> Annotated s -> DynFormula s -> (Actions s -> a) -> Property
+ Test.QuickCheck.DynamicLogic.Internal: forAllUniqueScripts :: (DynLogicModel s, Testable a) => Annotated s -> DynFormula s -> (Actions s -> a) -> Property
Files
- CHANGELOG.md +7/−0
- quickcheck-dynamic.cabal +1/−1
- src/Test/QuickCheck/DynamicLogic.hs +1/−2
- src/Test/QuickCheck/DynamicLogic/Internal.hs +2/−2
- src/Test/QuickCheck/StateModel/Variables.hs +10/−1
CHANGELOG.md view
@@ -9,6 +9,13 @@ ## UNRELEASED +## 3.0.2 - 2023-02-17++* Added instances of `HasVariables` for Word types+* Exported definition of `HasNoVariables` to make it useable+ with deriving via in downstream packages (whoops!)+* Fixed impossible to use `nextVar` arguments to `forAllUniqueDL`+ ## 3.0.1 - 2023-02-15 * Remove template haskell dependency
quickcheck-dynamic.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: quickcheck-dynamic-version: 3.0.1+version: 3.0.2 license: Apache-2.0 license-files: LICENSE
src/Test/QuickCheck/DynamicLogic.hs view
@@ -125,12 +125,11 @@ forAllUniqueDL :: (DL.DynLogicModel s, Testable a) =>- Int -> Annotated s -> DL s () -> (Actions s -> a) -> Property-forAllUniqueDL nextVar initState d = DL.forAllUniqueScripts nextVar initState (runDL initState d)+forAllUniqueDL initState d = DL.forAllUniqueScripts initState (runDL initState d) forAllDL :: (DL.DynLogicModel s, Testable a) =>
src/Test/QuickCheck/DynamicLogic/Internal.hs view
@@ -325,14 +325,14 @@ -- | `Property` function suitable for formulae without choice. forAllUniqueScripts :: (DynLogicModel s, Testable a) =>- Int -> Annotated s -> DynFormula s -> (Actions s -> a) -> Property-forAllUniqueScripts n s f k =+forAllUniqueScripts s f k = QC.withSize $ \sz -> let d = unDynFormula f sz+ n = unsafeNextVarIndex $ vars s in case generate chooseUniqueNextStep d n s 500 of Nothing -> counterexample "Generating Non-unique script in forAllUniqueScripts" False Just test -> validDLTest d test . applyMonitoring d test . property $ k (scriptFromDL test)
src/Test/QuickCheck/StateModel/Variables.hs view
@@ -6,7 +6,7 @@ Var, Any (..), HasVariables (..),- HasNoVariables,+ HasNoVariables (..), VarContext, mkVar, ctxAtType,@@ -16,6 +16,7 @@ isWellTyped, allVariables, unsafeCoerceVar,+ unsafeNextVarIndex ) where import Data.Data@@ -26,6 +27,7 @@ import Data.Set (Set) import Data.Set qualified as Set import GHC.Generics+import GHC.Word import Test.QuickCheck as QC -- | A symbolic variable for a value of type `a`@@ -65,6 +67,10 @@ deriving via HasNoVariables Integer instance HasVariables Integer deriving via HasNoVariables Int instance HasVariables Int deriving via HasNoVariables Char instance HasVariables Char+deriving via HasNoVariables Word8 instance HasVariables Word8+deriving via HasNoVariables Word16 instance HasVariables Word16+deriving via HasNoVariables Word32 instance HasVariables Word32+deriving via HasNoVariables Word64 instance HasVariables Word64 data Any f where Some :: (Typeable a, Eq (f a)) => f a -> Any f@@ -119,6 +125,9 @@ unsafeCoerceVar :: Var a -> Var b unsafeCoerceVar (Var i) = Var i++unsafeNextVarIndex :: VarContext -> Int+unsafeNextVarIndex (VarCtx vs) = 1 + maximum (0 : [ i | Some (Var i) <- Set.toList vs ]) instance {-# OVERLAPPABLE #-} (Generic a, GenericHasVariables (Rep a)) => HasVariables a