Let's bikeshed std.experimental.testing assertions/checks/whatchamacallits

Dicebot via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 30 04:43:34 PDT 2015


To do it _really_ nice, we would need some sort of ".codeof" 
feature. Possibly, with implicit returns in lambdas. For example:

void test(alias expr)
{
     if (!expr())
         throw new TestException(
             expr.codeof ~ " has failed,\n" ~
             /* investigate expr context pointer and grab a/b */
             "\ta = x\n" ~
             "\tb = y"
}

unittest
{
     int a, b;
     test!({ a == b; });
}

Of course, this is one of cases where AST macros would really 
shine. But I think it should be possible to provide necessary 
functionality subset in a much more simple and limited feature.

In absence of language changes, I don't see anything as clear and 
simple as operator mixins. Less magic in unittests -> better. 
Common misconception IMHO is that tests should look nice for 
library/app author, while, from the ecosystem PoV, they should 
look simple and predictable for contributors - and that is most 
important property.


More information about the Digitalmars-d mailing list