Novak: Very cool. Can qcheck automatically figure out a way to generate the arbitrary data types needed as input for the property/testee? Or did I read that wrong?
Cheers, Andrew Pennebaker www.yellosoft.us On Tue, Oct 18, 2011 at 11:14 PM, Martin Nowak <[email protected]> wrote: > On Tue, 18 Oct 2011 21:17:56 +0200, bearophile <[email protected]> > wrote: > > Andrew Pennebaker: >> >> The D version will be called dashcheck<https://github.com/** >>> mcandre/dashcheck <https://github.com/mcandre/dashcheck>> >>> >> >> QuickCheck is one of the good things of Haskell. >> >> I have raised the topic few times: >> http://www.digitalmars.com/d/**archives/digitalmars/D/** >> QuickCheck-like_in_Phobos_**131256.html<http://www.digitalmars.com/d/archives/digitalmars/D/QuickCheck-like_in_Phobos_131256.html> >> http://www.digitalmars.com/d/**archives/digitalmars/D/Re_** >> Unit_Testing_for_D_._72154.**html<http://www.digitalmars.com/d/archives/digitalmars/D/Re_Unit_Testing_for_D_._72154.html> >> >> I remember someone has already written one or two D versions of >> QuickCheck-like (probably D1), but it didn't get a lot of interest in the D >> newsgroups. One of them: >> http://www.digitalmars.com/**webnews/newsgroups.php?art_** >> group=digitalmars.D&article_**id=73949<http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=73949> >> >> Bye, >> bearophile >> > > I wrote a pretty complete port of Haskell's Quickcheck some month ago. > https://github.com/dawgfoto/**qcheck <https://github.com/dawgfoto/qcheck> > The main function quickcheck takes the testee as first template parameter > and a bunch of policies. It will use getArbitraryTuple to construct the > parameters > of the testee. It should be able to construct a random instance of any type > out of the box, > but you can also pass generators with the policies and they will be used > instead. > There is also a Policy RandomizeMembers which will set aggregate members to > random values > after construction. > The testee might return a boolean result or an enum QCheckResult which has > a third entry > QCheckResult.Reject. > > martin >
