unittesting generic functions

Chris Cain via Digitalmars-d digitalmars-d at puremagic.com
Wed Aug 13 19:54:41 PDT 2014


On Thursday, 14 August 2014 at 02:04:09 UTC, Idan Arye wrote:
> Well, there's nothing to test in abstract functions, is there?
>
> I'm more concerned about the unit test appearing before the 
> code, when the usual convention is to put the unit tests after 
> the code they are testing...

There is precedence conceptually for putting unittests before 
code (TDD as an example of a technique that suggests unittests 
should be written first). Plus, in some ways it makes sense that 
unittests come first because it shows you how to use the function 
in question. I often look at unittests for examples of how to use 
code, almost like documentation (which also comes before the 
code).

Not to mention the fact that we'd have to come up with new syntax 
otherwise. The following is ambiguous:

     void blah(T)(...)
     in { ... }
     body { ... }
     unittest { ... }

Is the unittest
   1. part of the module and thus should only be run once
or is it
   2. part of the templated function and should be run per 
instantiation?

Current behavior is 1. So it'd be really necessary to come up 
with some new, unambiguous syntax to put the unittest after the 
function. Whereas the current proposal doesn't create an 
ambiguity and doesn't need new, special syntax to perform this 
task.


More information about the Digitalmars-d mailing list