unit-threaded v0.6.5 - Type-parametrized tests
Atila Neves via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Thu Mar 10 03:05:07 PST 2016
On Thursday, 10 March 2016 at 08:09:40 UTC, Jacob Carlborg wrote:
> On 2016-03-09 19:01, Atila Neves wrote:
>> The forum must be sick of hearing from me... :P For those not
>> in the
>> know, unit-threaded is an advanced unit testing library for D:
>>
>> http://code.dlang.org/packages/unit-threaded
>>
>> The v0.6.3 release had tests parametrized by value; this
>> v0.6.5 release
>> brings with it the possibility of parametrizing tests by type,
>> like so:
>>
>> @Types!(int, byte)
>> void testInit(T)() {
>> assert(T.init == 0);
>> }
>>
>> This will run the testInit code twice, once for each type, and
>> report
>> them as separate tests:
>>
>> tests.pass.attributes.testInit.int:
>> tests.pass.attributes.testInit.byte:
>>
>>
>> I've literally only written that silly testInit example yet.
>> But imagine
>> how easy it'd be to test, say, different input ranges.
>>
>> I'm thinking of ways of getting the parametrized tests to work
>> with the
>> built-in unittest blocks. I assume it'll be hacky. Right now
>> it's the
>> only thing that requires non-standard test functions and I'm
>> trying to
>> augment the existing unit testing features of D instead of
>> replacing them.
>
> Do you have a slightly more extended example that shows how
> this is used?
No, sorry. I haven't needed it yet. Something like this?
@Types!(int, string)
void testArray(T)() {
import std.container;
auto arr = Array!T();
arr.empty.shouldBeTrue;
arr.insertBack(T.init);
arr.empty.shouldBeFalse;
auto l = arr.length;
l.shouldEqual(1);
}
Atila
More information about the Digitalmars-d-announce
mailing list