quickcheck-property-comb: Combinators for Quickcheck Property construction and diagnostics

[ library, public-domain, testing ] [ Propose Tags ]

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

disjoints_odds ::  Inv (Disjoints l)
disjoints_odds = do
 doc "no odd sets in disjoints"
 disjoint_sets <- cause
 return False

disjoints_non_singletons :: Inv (Disjoints l)
disjoints_non_singletons = do
  return True

disjoints_inv :: Invariants (Disjoints l)
disjoints_inv= do
  sat disjoints_odds
  sat disjoints_non_singletons

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

inv_consumers :: Invariants (Consumers l)
inv_consumers = do
  satcomp disjoints disjoints_inv
  satcomp met met_inv
  sat introduced_in_disjoint

And to run the invariants on generated cases:

prop_testedFunction :: Arg -> Property
prop_testedFunction arg =
 let consumers = testedFunction arg in
   runInvariants consumers inv_consumers


  • Test
    • QuickCheck
      • Property
        • Test.QuickCheck.Property.Comb


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS],,
Dependencies base (>=4.5 && <4.6), mtl (>=2.1 && <2.2), QuickCheck (>=2.5 && <=2.6) [details]
License LicenseRef-PublicDomain
Author John Feltz
Maintainer jfeltz@gmail.com
Category Testing
Home page http://www.github.com/jfeltz/quickcheck-property-comb
Uploaded by jfeltz at 2013-12-26T15:41:51Z
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 2178 total (9 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 6 reports]