On Wed, 12 May 2010 18:54:20 -0400, bearophile <bearophileh...@lycos.com> wrote:

Steven Schveighoffer:

class ArrayList(V)
{
    V take() {...}
    unittest
    {
       auto al = new ArrayList!uint;
...


That unit test is the test of just take().

[snip]

I don't have other ideas for you.

Right now, I'm doing fine with the static if for conditionally having unit tests. I feel less strongly about having unit tests which test a function regardless of implementation than I originally did. In order to unittest a function, you will inevitably end up instantiating with certain types, you can just use a static if to only build the unit tests when those types are present, or you could do it the same way I originally did, and have the unit tests run more than once.

Of course, it is odd to have to do this at the end of the class declaration:

unittest
{
   ArrayList!int al1;
   ArrayList!uint al2;
   ...
}

But there's no other way to do it. If D could implicitly do this, I would like it, but it's not that big of a deal. In fact, you could probably write a CTFE function that takes a list of types and instantiates them all in order to make sure unit tests run.

This post was more of a "hey, look what's cool about unit tests and templates!" than a complaint :)

-Steve

Reply via email to