quickcheck-property-comb: Combinators for Quickcheck Property construction and diagnostics
These are simple monads that aim to reduce the pain of composing invariants/properties, and the documenting of those invariants for determining the cause of failure. Specifically, they provide a tool for effective diagnostic for invariants with changing post-conditions, leading to a faster cause-of-failure diagnosis.
Example case for invariants on a data structure Consumers.
data (Ord l) => Consumers l =
Consumers {
introduced :: S.Set l,
met :: M.Map (S.Set l) Bool,
disjoints :: Disjoints l
}
introduced_in_disjoint :: Inv (Consumers l)
introduced_in_disjoint = do
doc "all at quantity are a singleton subset in disjoints"
subsets <- (map S.singleton) . S.toList . introduced <$> cause
disjoint_sets <- disjoints <$> cause
return . and . map ((flip S.member) disjoint_sets) $ subsets
disjoint_sizes :: Inv (Disjoints l)
disjoint_sizes = do
doc . unlines $
[ "the intersection of introduced and disjoints are the only allowed",
"singleton sets in disjoints"
]
disjoints' <- cause
-- Do the checking
return False
disjoints_eq :: Inv (Disjoints l)
disjoints_eq = do
doc "disjoint sets are equal in size"
-- ..
return True
disjoints_inv :: Invariants (Disjoints l)
disjoints_inv= do
sat disjoints_eq
sat disjoints_sizes
inv_consumers :: Invariants (Consumers l)
inv_consumers = do
satcomp disjoints disjoints_inv
satcomp met met_inv
sat introduced_in_disjointAnd to run the Consumer invariant on generated cases:
prop_testedFunction :: Arg -> Property prop_testedFunction arg = let consumers = testedFunction arg in runInvariants consumers inv_consumers
[Skip to Readme]
Modules
- Test
- QuickCheck
- Property
- Test.QuickCheck.Property.Comb
- Property
- QuickCheck
Downloads
- quickcheck-property-comb-0.1.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.1.0.2 |
|---|---|
| Dependencies | base (>=4.5 && <4.6), mtl (>=2.1 && <2.2), QuickCheck (>=2.5 && <=2.6) [details] |
| License | LicenseRef-PublicDomain |
| Author | John Feltz |
| Maintainer | [email protected] |
| Category | Testing |
| Home page | http://www.github.com/jfeltz/quickcheck-property-comb |
| Uploaded | by jfeltz at 2013-12-26T14:30:48Z |
| Distributions | |
| Reverse Dependencies | 1 direct, 0 indirect [details] |
| Downloads | 2266 total (7 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs not available [build log] All reported builds failed as of 2016-12-19 [all 5 reports] |