Clark Gaebel cgaebel at uwaterloo.ca
Tue Nov 13 22:55:28 CET 2012

```Your implication is backwards. ==> is read "implies"

So your way has "do blah with positive integers" implies "x > 0 && y > 0".
That's backwards.

Try prop_something x y = x > 0 && y > 0 ==> ... do blah with positive
integers

- Clark

On Tue, Nov 13, 2012 at 4:52 PM, <graham at fatlazycat.com> wrote:

> Thanks, will try them both. With regards to the implication I assume
> it's just regarded as one property test ?
>
> To get two values greater than zero I have something like
>
> prop_something x y = .......do blah with positive integers
>   ==> x > 0 && y > 0
>
> But my test fails as it appears to be injecting a negative number and
> the test fails. But the implication does not cause the failed test to be
> ignored.
>
> Must be missing something ???
>
> Thanks
>
> On Mon, Nov 12, 2012, at 10:00 PM, Iustin Pop wrote:
> > On Mon, Nov 12, 2012 at 10:14:30PM +0100, Simon Hengel wrote:
> > > On Mon, Nov 12, 2012 at 07:21:06PM +0000, graham at fatlazycat.com wrote:
> > > > Hi,
> > > >
> > > > Trying to find some good docs on QuickCheck, if anyone has one ?
> > > >
> > > > Been scanning what I can find, but a question.
> > > >
> > > > What would be the best way to generate two different/distinct
> integers ?
> > >
> > > I would use Quickcheck's implication operator here:
> > >
> > >     quickCheck \$ \x y -> x /= (y :: Int) ==> ...
> >
> > That's good, but it only eliminates test cases after they have been
> > generated. A slightly better (IMHO) version is to generate "correct"
> > values in the first place:
> >
> >     prop_Test :: Property
> >     prop_Test =
> >         forAll (arbitrary::Gen Int) \$ \x ->
> >         forAll (arbitrary `suchThat` (/= x)) \$ \y ->
> >         …
> >
> > regards,
> > iustin
>
> _______________________________________________