From 7aa85ae7228c613f82830f9f461515fd7873de6b Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Thu, 8 Oct 2015 16:37:17 -0700 Subject: [PATCH] Unit test for the IsEnd fix in the previous commit --- .../MemoryPoolBlock2Tests.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/test/Microsoft.AspNet.Server.KestrelTests/MemoryPoolBlock2Tests.cs b/test/Microsoft.AspNet.Server.KestrelTests/MemoryPoolBlock2Tests.cs index 9f87347292..d266bb37f0 100644 --- a/test/Microsoft.AspNet.Server.KestrelTests/MemoryPoolBlock2Tests.cs +++ b/test/Microsoft.AspNet.Server.KestrelTests/MemoryPoolBlock2Tests.cs @@ -152,6 +152,30 @@ namespace Microsoft.AspNet.Server.KestrelTests } } + [Fact] + public void IsEndCorrectlyTraversesBlocks() + { + using (var pool = new MemoryPool2()) + { + var block1 = pool.Lease(128); + var block2 = block1.Next = pool.Lease(128); + var block3 = block2.Next = pool.Lease(128); + var block4 = block3.Next = pool.Lease(128); + + // There is no data in block2 or block4, so IsEnd should be true after 256 bytes are read. + block1.End += 128; + block3.End += 128; + + var iterStart = block1.GetIterator(); + var iterMid = iterStart.Add(128); + var iterEnd = iterMid.Add(128); + + Assert.False(iterStart.IsEnd); + Assert.False(iterMid.IsEnd); + Assert.True(iterEnd.IsEnd); + } + } + private void AssertIterator(MemoryPoolIterator2 iter, MemoryPoolBlock2 block, int index) { Assert.Same(block, iter.Block);