How do you use templates in D?

Martin Nowak dawg at dawgfoto.de
Tue Oct 18 20:14:21 PDT 2011


On Tue, 18 Oct 2011 21:17:56 +0200, bearophile <bearophileHUGS at lycos.com>  
wrote:

> Andrew Pennebaker:
>
>> The D version will be called  
>> 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/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
>
> Bye,
> bearophile

I wrote a pretty complete port of Haskell's Quickcheck some month ago.
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


More information about the Digitalmars-d mailing list