Testing package proposed for Phobos
Walter Bright via Digitalmars-d
digitalmars-d at puremagic.com
Tue Feb 10 14:45:15 PST 2015
To get things started, I created an InputRange and a function to test any
InputRange. Compiling it:
dmd inputrange -unittest -main -cov
shows 100% coverage.
-------------
struct InputRange(T : T[])
{
this(T[] r)
{
this.r = r;
}
@property bool empty()
{
hasData = (r.length != 0);
return !hasData;
}
@property T front()
{
assert(hasData);
return r[0];
}
void popFront()
{
assert(hasData);
r = r[1 .. $];
hasData = false;
}
private:
T[] r;
bool hasData;
}
void testInputRange(R)(R r, int n)
{
foreach (i; 0 .. n)
{
if (!r.empty)
{
if (i & 1)
{
auto e = r.front;
auto e2 = r.front;
assert(e == e2);
}
r.popFront();
}
}
}
unittest
{
string s = "hello";
auto r = InputRange!string(s);
r.testInputRange(10);
}
-------------
More information about the Digitalmars-d
mailing list