Problem with unittest in templates.
Jason House
jason.james.house at gmail.com
Sat Dec 30 19:51:50 PST 2006
Peter C. Chapin wrote:
> Hello! I'm using dmd 0.178. I'm having trouble getting the unittest
> section of a class template to execute. I have two files:
>
> ----> main.d <----
>
> import other;
>
> int main( )
> {
> Foo!(int) my_foo = new Foo!(int);
> return( 0 );
> }
>
> ----> other.d <----
>
> class Foo(T) {
> unittest {
> assert( 1 == 0 );
> }
> };
>
> I compile this program using 'dmd -unittest main.d other.d'. It compiles
> without error but when it executes there is no assertion failure.
> However, if I move the definition of class Foo(T) into main.d (and throw
> away other.d) I *do* get the assertion failure. Am I doing something
> wrong? Is this supposed to work?
>
> I'm also noticing that the unittest section isn't as useful in a
> template as it is in a non-template. It's awkward writing unittests
> generically without knowledge of a specific type T. Is this "the way it
> is" or is there some nice programming technique that I should be using
> here? I find myself thinking about writing a separate test program (C++
> style) where I can work with specific specializations of the template.
>
> Peter
In my experiments with D, I've found that you must instantiate the
templated class in order to get the unittest to run. I don't know if
it's one unit test execution per instantiation or one unit test run for
each complete type (such as T=int, T=char, etc...). I'd guess the latter.
More information about the Digitalmars-d-learn
mailing list