On Tuesday 01 February 2011 07:21:54 Don wrote:
> Jonathan M Davis wrote:
> > On Sunday 30 January 2011 05:28:36 SHOO wrote:
> >> To be frank, I don't think that such a helper is necessary.
> >> I think these helpers will harm intuitive readability of unittest code.
> >> For unittest code, it is necessary to be able to understand easily even
> >> if without the document.
> > 
> > Do you really find
> > 
> > assertPred!"=="(min(5, 7), 5);
> > 
> > to be all that harder to understand than
> > 
> > assert(min(5, 7) == 5);
> 
> I do. *Much* harder. Factor of two, at least.
> In absolute terms, not so much, because it was the original assert is
> very easy to understand. But the relative factor matters enormously.
> Much as comparing:
> a.add(b);
> a += b;
> 
> And I think this is a very important issue.

Well, it's quite common for unit testing frameworks to have stuff like 
assertEqual, assertNotEqual, assertLessThan, etc. assertPred!"==" isn't all 
that 
different, except it embeds the actual operator in it via a template argument, 
so 
if anything, it's arguably easier to read than those.

And honestly, I think that the added debugging benefit of assertPred far 
outweighs any potential readability issues. assert as it stands is quite poor 
in 
comparison.

>  >I don't see how these functions could be anything but an improvement.
>  >
>  > But even if they get into Phobos, you obviously don't have to use them.
> 
> This is not true. Including them in Phobos gives a legitimacy to that
> style of programming. It's a role model.
> 
> Including stuff like this could give D a reputation for lack of
> readability. My belief is that right now, the #1 risk for Phobos is that
> it becomes too clever and inaccessible.
> 
> IMHO, something simple which has any appearance of being complicated,
> needs a VERY strong justification.

Valid point. However, I do think that the added usefulness of assertPred far 
outweighs any readability issues, but honestly, I don't think that it's all 
that 
hard to read - especially when it's very typical for unit testing frameworks to 
have function such as assertEqual and assertGreaterThan.

-  Jonathan M Davis

Reply via email to