Skip to content

Commit

Permalink
Merge pull request #3874 from JackStouffer/bigint
Browse files Browse the repository at this point in the history
Added ReferenceBidirectionalRange to std.internal.test.dummyrange
  • Loading branch information
JakobOvrum committed Jan 9, 2016
2 parents 9df3aed + 467276c commit 644cec8
Showing 1 changed file with 34 additions and 10 deletions.
44 changes: 34 additions & 10 deletions std/internal/test/dummyrange.d
Original file line number Diff line number Diff line change
Expand Up @@ -222,16 +222,8 @@ class ReferenceInputRange(T)
}

/**
Reference forward range
Infinite input range
*/
class ReferenceForwardRange(T) : ReferenceInputRange!T
{
this(Range)(Range r) if (isInputRange!Range) {super(r);}
final @property ReferenceForwardRange save()
{return new ReferenceForwardRange!T(_payload);}
}

//Infinite input range
class ReferenceInfiniteInputRange(T)
{
this(T first = T.init) {_val = first;}
Expand All @@ -241,10 +233,42 @@ class ReferenceInfiniteInputRange(T)
protected T _val;
}

//Infinite forward range
/**
Reference forward range
*/
class ReferenceForwardRange(T) : ReferenceInputRange!T
{
this(Range)(Range r) if (isInputRange!Range) {super(r);}
final @property auto save(this This)() {return new This( _payload);}
}

/**
Infinite forward range
*/
class ReferenceInfiniteForwardRange(T) : ReferenceInfiniteInputRange!T
{
this(T first = T.init) {super(first);}
final @property ReferenceInfiniteForwardRange save()
{return new ReferenceInfiniteForwardRange!T(_val);}
}

/**
Reference bidirectional range
*/
class ReferenceBidirectionalRange(T) : ReferenceForwardRange!T
{
this(Range)(Range r) if (isInputRange!Range) {super(r);}
final @property ref T back(){return _payload.back;}
final void popBack(){_payload.popBack();}
}

unittest
{
static assert(isInputRange!(ReferenceInputRange!int));
static assert(isInputRange!(ReferenceInfiniteInputRange!int));

static assert(isForwardRange!(ReferenceForwardRange!int));
static assert(isForwardRange!(ReferenceInfiniteForwardRange!int));

static assert(isBidirectionalRange!(ReferenceBidirectionalRange!int));
}

0 comments on commit 644cec8

Please sign in to comment.