[GSOC] regular expressions beta is here
Marco Leise
Marco.Leise at gmx.de
Thu Aug 11 14:49:53 PDT 2011
Am 11.08.2011, 19:56 Uhr, schrieb Adam D. Ruppe
<destructionator at gmail.com>:
> If it's worth anything, I use the out contracts in dom.d more as
> checked documentation than for serious bug-finding.
>
> For example:
>
> Element appendChild(Element newChild)
> out (ret) { assert(ret is newChild); }
> body { ... }
>
> I also use it from time to time to assert that a return value is not
> null. The check itself isn't particularly useful, but I think it's
> a nice bit of documentation.
>
> Actually, IMO, in and out contracts should be in the generated
> ddoc too.
I've been wondering for a while if selective unit tests could be included
in DDOC somehow. Most of the 'examples' in the Phobos documentation look
like they were taken right out of a unittest block blow the function. Like
BinaryHeap in std.containers:
----------------------------------------------------------------------
DDOC:
// Example from "Introduction to Algorithms" Cormen et al, p 146
int[] a = [ 4, 1, 3, 2, 16, 9, 10, 14, 8, 7 ];
auto h = heapify(a);
// largest element
assert(h.front == 16);
// a has the heap property
assert(equal(a, [ 16, 14, 10, 9, 8, 7, 4, 3, 2, 1 ]));
----------------------------------------------------------------------
std/containers.d:
unittest
{
{
// example from "Introduction to Algorithms" Cormen et al., p 146
int[] a = [ 4, 1, 3, 2, 16, 9, 10, 14, 8, 7 ];
auto h = heapify(a);
assert(h.front == 16);
assert(a == [ 16, 14, 10, 8, 7, 9, 3, 2, 4, 1 ]);
auto witness = [ 16, 14, 10, 9, 8, 7, 4, 3, 2, 1 ];
for (; !h.empty; h.removeFront(), witness.popFront())
{
assert(!witness.empty);
assert(witness.front == h.front);
}
assert(witness.empty);
}
{
int[] a = [ 4, 1, 3, 2, 16, 9, 10, 14, 8, 7 ];
int[] b = new int[a.length];
BinaryHeap!(int[]) h = BinaryHeap!(int[])(b, 0);
foreach (e; a)
{
h.insert(e);
}
assert(b == [ 16, 14, 10, 8, 7, 3, 9, 1, 4, 2 ], text(b));
}
}
----------------------------------------------------------------------
bearophile, you are the expert with the DRY buzz word ;)
More information about the Digitalmars-d
mailing list