commit!
This commit is contained in:
parent
9c930a6cab
commit
0b41113d67
@ -157,6 +157,11 @@ namespace ObservableCollections
|
|||||||
|
|
||||||
public RingBufferSpan<T> GetSpan()
|
public RingBufferSpan<T> GetSpan()
|
||||||
{
|
{
|
||||||
|
if (count == 0)
|
||||||
|
{
|
||||||
|
return new RingBufferSpan<T>(Array.Empty<T>(), Array.Empty<T>(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
var start = head & mask;
|
var start = head & mask;
|
||||||
var end = (head + count) & mask;
|
var end = (head + count) & mask;
|
||||||
|
|
||||||
@ -206,6 +211,8 @@ namespace ObservableCollections
|
|||||||
|
|
||||||
public IEnumerable<T> Reverse()
|
public IEnumerable<T> Reverse()
|
||||||
{
|
{
|
||||||
|
if (count == 0) yield break;
|
||||||
|
|
||||||
var start = head & mask;
|
var start = head & mask;
|
||||||
var end = (head + count) & mask;
|
var end = (head + count) & mask;
|
||||||
|
|
||||||
|
@ -157,6 +157,11 @@ namespace ObservableCollections
|
|||||||
|
|
||||||
public RingBufferSpan<T> GetSpan()
|
public RingBufferSpan<T> GetSpan()
|
||||||
{
|
{
|
||||||
|
if (count == 0)
|
||||||
|
{
|
||||||
|
return new RingBufferSpan<T>(Array.Empty<T>(), Array.Empty<T>(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
var start = head & mask;
|
var start = head & mask;
|
||||||
var end = (head + count) & mask;
|
var end = (head + count) & mask;
|
||||||
|
|
||||||
@ -206,6 +211,8 @@ namespace ObservableCollections
|
|||||||
|
|
||||||
public IEnumerable<T> Reverse()
|
public IEnumerable<T> Reverse()
|
||||||
{
|
{
|
||||||
|
if (count == 0) yield break;
|
||||||
|
|
||||||
var start = head & mask;
|
var start = head & mask;
|
||||||
var end = (head + count) & mask;
|
var end = (head + count) & mask;
|
||||||
|
|
||||||
|
@ -126,6 +126,46 @@ namespace ObservableCollections.Tests
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Iteration()
|
||||||
|
{
|
||||||
|
var empty = new RingBuffer<int>();
|
||||||
|
empty.ToArray().Should().BeEmpty();
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
var buffer = new RingBuffer<int>();
|
||||||
|
for (int j = 0; j < i; j++)
|
||||||
|
{
|
||||||
|
buffer.AddLast(j);
|
||||||
|
}
|
||||||
|
buffer.ToArray().Should().Equal(Enumerable.Range(0, i).ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
var buffer = new RingBuffer<int>();
|
||||||
|
for (int j = 0; j < i; j++)
|
||||||
|
{
|
||||||
|
buffer.AddFirst(j);
|
||||||
|
}
|
||||||
|
buffer.ToArray().Should().Equal(Enumerable.Range(0, i).Reverse().ToArray());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void RandomIteration()
|
||||||
|
{
|
||||||
|
var buffer = new RingBuffer<int>();
|
||||||
|
buffer.AddFirst(10);
|
||||||
|
buffer.AddLast(20);
|
||||||
|
buffer.AddLast(30);
|
||||||
|
buffer.AddFirst(40);
|
||||||
|
|
||||||
|
buffer.ToArray().Should().Equal(40, 10, 20, 30);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void BinarySearchTest()
|
public void BinarySearchTest()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user