On 04/13/2011 10:38 PM, Andrei Alexandrescu wrote:
Similarly, it would be great if next to e.g.
http://d-programming-language.org/phobos-prerelease/std_algorithm.html#setUnion
there would be a "Try it now" button. Clicking on that button would open an
overlay with an edit window. The edit window initially contains the example
text:
unittest
{
int[] a = [ 1, 2, 4, 5, 7, 9 ];
int[] b = [ 0, 1, 2, 4, 7, 8 ];
int[] c = [ 10 ];
assert(setUnion(a, b).length == a.length + b.length);
assert(equal(setUnion(a, b), [0, 1, 1, 2, 2, 4, 4, 5, 7, 7, 8, 9][]));
assert(equal(setUnion(a, c, b), [0, 1, 1, 2, 2, 4, 4, 5, 7, 7, 8, 9, 10][]));
}
Then the user can change, compile, and run that program, to ultimately close
the overlay and return to the documentation.
I recently started to realise a side-effect of the unittest feature is to
provide D with "free code blocks", where one can just put any piece of code;
code that could go on a module's top-level in a dynamic language.
Typically, this allows clean trials. Eg, does '/' perform euclidean division or
true division, on integers / reals?
import std.stdio : writeln;
unittest {
writeln("ints");
writeln(2/2);
writeln(3/2);
}
unittest {
writeln("reals");
writeln(2.0/2);
writeln(3.0/2);
}
void main () {}
Sure, one can use main() for this. But unittest blocks are cleaner and allow
structuration. In the same vein, unittests can be cleanly used to *demonstrate*
language behaviour; for instance in tutorials, when showing issues like on
D-leran, or for... bug reports.
Denis
--
_________________
vita es estrany
spir.wikidot.com