public void IdPropertyShouldNotChangeUsageAfterUsage() { // First usage. int id; using (var pms = _memoryStreamPool.GetObject()) { id = pms.PooledObjectInfo.Id; id.ShouldNotBe(0); } // Second usage is the same, pool uses a sort of stack, not a proper queue. using (var pms = _memoryStreamPool.GetObject()) { pms.PooledObjectInfo.Id.ShouldBe(id); } }
public void ShouldReturnToPoolWhenStreamIsSmall(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); _memoryStreamPool.ObjectsInPoolCount.ShouldBe(1); _memoryStreamPool.Diagnostics.ReturnedToPoolCount.ShouldBe(1); _memoryStreamPool.Diagnostics.ObjectResetFailedCount.ShouldBe(0); }