public void ShouldReturnToPoolWhenStreamIsSmall_TwoTimes(string text)
{
string result;
using (var pms = _memoryStreamPool.GetObject())
{
#pragma warning disable CC0022 // Should dispose object
var sw = new StreamWriter(pms.MemoryStream);
sw.Write(text);
sw.Flush();
pms.MemoryStream.Position = 0L;
var sr = new StreamReader(pms.MemoryStream);
result = sr.ReadToEnd();
#pragma warning restore CC0022 // Should dispose object
pms.MemoryStream.Capacity.ShouldBeLessThanOrEqualTo(_memoryStreamPool.MaximumMemoryStreamCapacity);
}
result.ShouldBe(text);
using (var pms = _memoryStreamPool.GetObject())
{
#pragma warning disable CC0022 // Should dispose object
var sw = new StreamWriter(pms.MemoryStream);
sw.Write(text);
sw.Write(text);
sw.Flush();
pms.MemoryStream.Position = 0L;
var sr = new StreamReader(pms.MemoryStream);
result = sr.ReadToEnd();
#pragma warning restore CC0022 // Should dispose object
pms.MemoryStream.Capacity.ShouldBeLessThanOrEqualTo(_memoryStreamPool.MaximumMemoryStreamCapacity);
}
result.ShouldBe(text + text);
_memoryStreamPool.ObjectsInPoolCount.ShouldBe(_memoryStreamPool.MinimumPoolSize);
_memoryStreamPool.Diagnostics.ReturnedToPoolCount.ShouldBe(2);
_memoryStreamPool.Diagnostics.ObjectResetFailedCount.ShouldBe(0);
}