-- Initial quickcheck-property-comb.cabal generated by cabal init. For -- further documentation, see http://haskell.org/cabal/users-guide/ name: quickcheck-property-comb version: 0.1.0.2 synopsis: Combinators for Quickcheck Property construction and diagnostics description: 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 homepage: http://www.github.com/jfeltz/quickcheck-property-comb license: PublicDomain license-file: LICENSE author: John Feltz maintainer: jfeltz@gmail.com category: Testing build-type: Simple cabal-version: >=1.10 library exposed-modules: Test.QuickCheck.Property.Comb -- other-modules: other-extensions: TupleSections, ScopedTypeVariables, GeneralizedNewtypeDeriving build-depends: base >=4.5 && <4.6, QuickCheck >=2.5 && <=2.6, mtl >=2.1 && <2.2 hs-source-dirs: ./ default-language: Haskell2010