Testing package proposed for Phobos

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Sun Feb 8 20:16:11 PST 2015


On 2/8/2015 6:08 PM, Walter Bright wrote:
> On 2/8/2015 5:52 PM, Jakob Ovrum wrote:
>> On Monday, 9 February 2015 at 01:41:33 UTC, Walter Bright wrote:
>>> Anyone interested in taking up this flag?
>>
>> Is this idea different from the one in std.internal.test.dummyrange?
>
> I wasn't aware of the existence of that. Will check it out.

Cursory review:

1. Yes, it's what I was asking for, at least in part.

2. Being in std.internal.test implies it is not for general usage. It needs to 
be for general usage.

3. It's used here:

grep -r std.internal.test *.d
algorithm\comparison.d:    import std.internal.test.dummyrange;
algorithm\iteration.d:    import std.internal.test.dummyrange;
algorithm\iteration.d:    import std.internal.test.dummyrange;
algorithm\iteration.d:    import std.internal.test.dummyrange;
algorithm\iteration.d:    import std.internal.test.dummyrange;
algorithm\iteration.d:    import std.internal.test.dummyrange;
algorithm\iteration.d:    import std.internal.test.dummyrange;
algorithm\mutation.d:    import std.internal.test.dummyrange;
algorithm\mutation.d:    import std.internal.test.dummyrange;
algorithm\searching.d:    import std.internal.test.dummyrange;
algorithm\searching.d:    import std.internal.test.dummyrange;
algorithm\searching.d:    import std.internal.test.dummyrange;
algorithm\searching.d:    import std.internal.test.dummyrange;
algorithm\searching.d:    import std.internal.test.dummyrange;
algorithm\searching.d:    import std.internal.test.dummyrange;
internal\test\dummyrange.d:module std.internal.test.dummyrange;
range\constraints.d:    import std.internal.test.dummyrange;
range\interfaces.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\package.d:    import std.internal.test.dummyrange;
range\primitives.d:    import std.internal.test.dummyrange;

I'd like to see it used much more pervasively in Phobos - essentially with every 
range that is defined, and every component that takes a range as a parameter, 
unless there's a good reason not to on a case-by-case basis.

4. It's only for uint data. This should be parameterized.

5. It's terribly underdocumented. I have no idea what ReturnBy, Length, or 
RangeType are without reading the implementation code.

6. It does not contain any protocol verification - for example, front() does not 
check that empty() was called beforehand.

7. There's not a single unittest in it.

8. I don't see any connection between DummyRange and ReferenceInputRange.

9. There are no test functions which accept an input range and test that the 
protocol at least exists and does not crash.

10. No @system types.

11. No output ranges.

I.e. it's a good starting point, but there's a lot more that can be done.


More information about the Digitalmars-d mailing list