RingBuffer.BinarySearch impl done, close #4

This commit is contained in:
neuecc 2021-09-10 20:57:25 +09:00
parent f28f9eb2a9
commit aa742b3962

View File

@ -126,34 +126,42 @@ namespace ObservableCollections.Tests
} }
// TODO: need more test.
[Fact] [Fact]
public void BinarySearchTest() public void BinarySearchTest()
{ {
var empty = new RingBuffer<int>(new int[] { }); var empty = new RingBuffer<int>(new int[] { });
var emptyL = new List<int>();
var single = new RingBuffer<int>(new[] { 10 }); var single = new RingBuffer<int>(new[] { 10 });
var singleL = new List<int>(new[] { 10 });
var buffer = new RingBuffer<int>(new[] var buffer = new RingBuffer<int>(new[]
{ {
1, 4, 5, 6, 10, 14, 15,17, 20, 33 1, 4, 5, 6, 10, 14, 15,17, 20, 33
}); });
var multiL = new List<int>(new[]
{
1, 4, 5, 6, 10, 14, 15,17, 20, 33
});
empty.BinarySearch(99).Should().BeLessThan(0); empty.BinarySearch(99).Should().BeLessThan(0);
empty.BinarySearch(99).Should().Be(emptyL.BinarySearch(99));
{ {
single.BinarySearch(10).Should().Be(0); single.BinarySearch(10).Should().Be(0);
var x1 = single.BinarySearch(4); var x1 = single.BinarySearch(4);
x1.Should().BeLessThan(0); x1.Should().BeLessThan(0);
(~x1).Should().Be(0); (~x1).Should().Be(0);
x1.Should().Be(single.BinarySearch(4));
var x2 = single.BinarySearch(40); var x2 = single.BinarySearch(40);
x2.Should().BeLessThan(0); x2.Should().BeLessThan(0);
(~x2).Should().Be(1); (~x2).Should().Be(1);
x2.Should().Be(single.BinarySearch(40));
} }
{ {
buffer.BinarySearch(0); for (int i = 0; i < 50; i++)
{
buffer.BinarySearch(i).Should().Be(multiL.BinarySearch(i));
}
} }