A possible suggestion for the Foreach loop
Dylan Knutson
tcdknutson at gmail.com
Wed Aug 21 14:03:23 PDT 2013
On Wednesday, 21 August 2013 at 10:02:33 UTC, Tommi wrote:
>
> Why not just do this:
>
> import std.typetuple;
>
> T foo(T)(ref T thing)
> {
> thing++; return thing * 2;
> }
>
> unittest
> {
> foreach(Type; TypeTuple!(int, long, uint))
> {
> {
> Type tmp = 5;
> assert(foo(tmp) == 12);
> }
>
> {
> Type tmp = 0;
> foo(tmp);
> assert(tmp == 1);
> }
> }
> }
Well, that's one way to go about doing it. But, this seems
sub-optimal because a defining trait of unittests is that they're
as small and focused on a single behavior for an
object/function/whatever as possible. Grouping all testing into a
single unittest breaks this convention.
Not to mention, we've got 'static if', and 'static assert', which
can exist outside of function bodies and operate on compile time
determinable values. It seems like a strange exception for
foreach (which can already operate on compile time values) to be
excluded from this group.
More information about the Digitalmars-d
mailing list