mirror of
https://github.com/oliverbooth/X10D
synced 2024-11-23 01:28:48 +00:00
test: bring coverage to 100% for X10D.Collections.SpanExtensions
This commit is contained in:
parent
f10ff4a36c
commit
95cd3e8cbc
@ -16,6 +16,16 @@ public class SpanTest
|
|||||||
Assert.AreEqual(0, count);
|
Assert.AreEqual(0, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Count_ShouldReturn0_GivenEmptyReadOnlySpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<int> span = ReadOnlySpan<int>.Empty;
|
||||||
|
|
||||||
|
int count = span.Count(2);
|
||||||
|
|
||||||
|
Assert.AreEqual(0, count);
|
||||||
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Count_ShouldReturn8_GivenSpanWith8MatchingElements()
|
public void Count_ShouldReturn8_GivenSpanWith8MatchingElements()
|
||||||
{
|
{
|
||||||
@ -27,7 +37,17 @@ public class SpanTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Split_OnEmptySpan_ShouldYieldNothing()
|
public void Count_ShouldReturn8_GivenReadOnlySpanWith8MatchingElements()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<int> span = stackalloc int[16] {1, 2, 3, 2, 5, 2, 7, 2, 9, 2, 11, 2, 13, 2, 15, 2};
|
||||||
|
|
||||||
|
int count = span.Count(2);
|
||||||
|
|
||||||
|
Assert.AreEqual(8, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnEmptySpan_ShouldYieldNothing_UsingCharDelimiter_GivenReadOnlySpan()
|
||||||
{
|
{
|
||||||
ReadOnlySpan<char> span = ReadOnlySpan<char>.Empty;
|
ReadOnlySpan<char> span = ReadOnlySpan<char>.Empty;
|
||||||
|
|
||||||
@ -41,7 +61,49 @@ public class SpanTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Split_OnOneWord_ShouldYieldLength1()
|
public void Split_OnEmptySpan_ShouldYieldNothing_UsingCharDelimiter_GivenSpan()
|
||||||
|
{
|
||||||
|
Span<char> span = Span<char>.Empty;
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> unused in span.Split(' '))
|
||||||
|
{
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(0, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnEmptySpan_ShouldYieldNothing_UsingStringDelimiter_GivenReadOnlySpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> span = ReadOnlySpan<char>.Empty;
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> unused in span.Split(" "))
|
||||||
|
{
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(0, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnEmptySpan_ShouldYieldNothing_UsingStringDelimiter_GivenSpan()
|
||||||
|
{
|
||||||
|
Span<char> span = Span<char>.Empty;
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> unused in span.Split(" "))
|
||||||
|
{
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(0, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnOneWord_ShouldYieldLength1_UsingCharDelimiter_GivenReadOnlySpan()
|
||||||
{
|
{
|
||||||
ReadOnlySpan<char> span = "Hello ".AsSpan();
|
ReadOnlySpan<char> span = "Hello ".AsSpan();
|
||||||
|
|
||||||
@ -60,9 +122,11 @@ public class SpanTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Split_OnTwoWords_ShouldYieldLength2()
|
public void Split_OnOneWord_ShouldYieldLength1_UsingCharDelimiter_GivenSpan()
|
||||||
{
|
{
|
||||||
ReadOnlySpan<char> span = "Hello World ".AsSpan();
|
ReadOnlySpan<char> source = "Hello ".AsSpan();
|
||||||
|
Span<char> span = stackalloc char[source.Length];
|
||||||
|
source.CopyTo(span);
|
||||||
|
|
||||||
var index = 0;
|
var index = 0;
|
||||||
foreach (ReadOnlySpan<char> subSpan in span.Split(' '))
|
foreach (ReadOnlySpan<char> subSpan in span.Split(' '))
|
||||||
@ -71,9 +135,149 @@ public class SpanTest
|
|||||||
{
|
{
|
||||||
Assert.AreEqual("Hello", subSpan.ToString());
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
}
|
}
|
||||||
else if (index == 1)
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(1, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnOneWord_ShouldYieldLength1_UsingStringDelimiter_GivenReadOnlySpan()
|
||||||
{
|
{
|
||||||
|
ReadOnlySpan<char> span = "Hello ".AsSpan();
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(" "))
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(1, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnOneWord_ShouldYieldLength1_UsingStringDelimiter_GivenSpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> source = "Hello ".AsSpan();
|
||||||
|
Span<char> span = stackalloc char[source.Length];
|
||||||
|
source.CopyTo(span);
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(" "))
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(1, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnOneWordWithoutDelimiter_ShouldYieldLength1_UsingCharDelimiter_GivenReadOnlySpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> span = "Hello".AsSpan();
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(' '))
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(1, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnOneWordWithoutDelimiter_ShouldYieldLength1_UsingCharDelimiter_GivenSpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> source = "Hello".AsSpan();
|
||||||
|
Span<char> span = stackalloc char[source.Length];
|
||||||
|
source.CopyTo(span);
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(' '))
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(1, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnOneWordWithoutDelimiter_ShouldYieldLength1_UsingStringDelimiter_GivenReadOnlySpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> span = "Hello".AsSpan();
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(" "))
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(1, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnOneWordWithoutDelimiter_ShouldYieldLength1_UsingStringDelimiter_GivenSpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> source = "Hello".AsSpan();
|
||||||
|
Span<char> span = stackalloc char[source.Length];
|
||||||
|
source.CopyTo(span);
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(" "))
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(1, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnTwoWords_ShouldYieldLength2_UsingCharDelimiter_GivenReadOnlySpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> span = "Hello World ".AsSpan();
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(' '))
|
||||||
|
{
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
Assert.AreEqual("World", subSpan.ToString());
|
Assert.AreEqual("World", subSpan.ToString());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
@ -83,24 +287,185 @@ public class SpanTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Split_OnThreeWords_ShouldYieldLength3()
|
public void Split_OnTwoWords_ShouldYieldLength2_UsingCharDelimiter_GivenSpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> source = "Hello World ".AsSpan();
|
||||||
|
Span<char> span = stackalloc char[source.Length];
|
||||||
|
source.CopyTo(span);
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(' '))
|
||||||
|
{
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Assert.AreEqual("World", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(2, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnTwoWords_ShouldYieldLength2_UsingStringDelimiter_GivenReadOnlySpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> span = "Hello World ".AsSpan();
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(" "))
|
||||||
|
{
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Assert.AreEqual("World", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(2, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnTwoWords_ShouldYieldLength2_UsingStringDelimiter_GivenSpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> source = "Hello World ".AsSpan();
|
||||||
|
Span<char> span = stackalloc char[source.Length];
|
||||||
|
source.CopyTo(span);
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(" "))
|
||||||
|
{
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Assert.AreEqual("Hello", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Assert.AreEqual("World", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(2, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnThreeWords_ShouldYieldLength3_UsingCharDelimiter_GivenReadOnlySpan()
|
||||||
{
|
{
|
||||||
ReadOnlySpan<char> span = "Hello, the World ".AsSpan();
|
ReadOnlySpan<char> span = "Hello, the World ".AsSpan();
|
||||||
|
|
||||||
var index = 0;
|
var index = 0;
|
||||||
foreach (ReadOnlySpan<char> subSpan in span.Split(' '))
|
foreach (ReadOnlySpan<char> subSpan in span.Split(' '))
|
||||||
{
|
{
|
||||||
if (index == 0)
|
switch (index)
|
||||||
{
|
{
|
||||||
|
case 0:
|
||||||
Assert.AreEqual("Hello,", subSpan.ToString());
|
Assert.AreEqual("Hello,", subSpan.ToString());
|
||||||
}
|
break;
|
||||||
else if (index == 1)
|
case 1:
|
||||||
{
|
|
||||||
Assert.AreEqual("the", subSpan.ToString());
|
Assert.AreEqual("the", subSpan.ToString());
|
||||||
}
|
break;
|
||||||
else if (index == 2)
|
case 2:
|
||||||
{
|
|
||||||
Assert.AreEqual("World", subSpan.ToString());
|
Assert.AreEqual("World", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(3, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnThreeWords_ShouldYieldLength3_UsingCharDelimiter_GivenSpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> source = "Hello, the World ".AsSpan();
|
||||||
|
Span<char> span = stackalloc char[source.Length];
|
||||||
|
source.CopyTo(span);
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(' '))
|
||||||
|
{
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Assert.AreEqual("Hello,", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Assert.AreEqual("the", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Assert.AreEqual("World", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(3, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnThreeWords_ShouldYieldLength3_UsingStringDelimiter_GivenReadOnlySpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> span = "Hello, the World ".AsSpan();
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(" "))
|
||||||
|
{
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Assert.AreEqual("Hello,", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Assert.AreEqual("the", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Assert.AreEqual("World", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.AreEqual(3, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Split_OnThreeWords_ShouldYieldLength3_UsingStringDelimiter_GivenSpan()
|
||||||
|
{
|
||||||
|
ReadOnlySpan<char> source = "Hello, the World ".AsSpan();
|
||||||
|
Span<char> span = stackalloc char[source.Length];
|
||||||
|
source.CopyTo(span);
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
foreach (ReadOnlySpan<char> subSpan in span.Split(" "))
|
||||||
|
{
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Assert.AreEqual("Hello,", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Assert.AreEqual("the", subSpan.ToString());
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Assert.AreEqual("World", subSpan.ToString());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
|
Loading…
Reference in New Issue
Block a user