Add GetArraySegment test
This commit is contained in:
parent
ef5ad3deea
commit
dc90dd1649
|
|
@ -994,6 +994,65 @@ namespace Microsoft.AspNetCore.Server.KestrelTests
|
|||
Assert.ThrowsAny<InvalidOperationException>(() => default(MemoryPoolIterator).Skip(1));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestGetArraySegment()
|
||||
{
|
||||
MemoryPoolBlock block0 = null;
|
||||
MemoryPoolBlock block1 = null;
|
||||
|
||||
var byteRange = Enumerable.Range(1, 127).Select(x => (byte)x).ToArray();
|
||||
try
|
||||
{
|
||||
// Arrange
|
||||
block0 = _pool.Lease();
|
||||
block1 = _pool.Lease();
|
||||
|
||||
block0.GetIterator().CopyFrom(byteRange);
|
||||
block1.GetIterator().CopyFrom(byteRange);
|
||||
|
||||
block0.Next = block1;
|
||||
|
||||
var begin = block0.GetIterator();
|
||||
var end0 = begin;
|
||||
var end1 = begin;
|
||||
|
||||
end0.Skip(byteRange.Length);
|
||||
end1.Skip(byteRange.Length * 2);
|
||||
|
||||
// Act
|
||||
var as0 = begin.GetArraySegment(end0);
|
||||
var as1 = begin.GetArraySegment(end1);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(as0.Count, byteRange.Length);
|
||||
Assert.Equal(as1.Count, byteRange.Length * 2);
|
||||
|
||||
for (var i = 1; i < byteRange.Length; i++)
|
||||
{
|
||||
var asb0 = as0.Array[i + as0.Offset];
|
||||
var asb1 = as1.Array[i + as1.Offset];
|
||||
var b = byteRange[i];
|
||||
|
||||
Assert.Equal(asb0, b);
|
||||
Assert.Equal(asb1, b);
|
||||
}
|
||||
|
||||
for (var i = 1 + byteRange.Length; i < byteRange.Length * 2; i++)
|
||||
{
|
||||
var asb1 = as1.Array[i + as1.Offset];
|
||||
var b = byteRange[i - byteRange.Length];
|
||||
|
||||
Assert.Equal(asb1, b);
|
||||
}
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (block0 != null) _pool.Return(block0);
|
||||
if (block1 != null) _pool.Return(block1);
|
||||
}
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("a", "a", 1)]
|
||||
[InlineData("ab", "a...", 1)]
|
||||
|
|
|
|||
Loading…
Reference in New Issue