-- 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