On Monday, 9 February 2015 at 04:16:26 UTC, Walter Bright wrote:
std.internal.test.dummyrange
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.
This looks like a good bugzilla enhancement request. As you often
say: it will get lost here.