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