public async Task ShouldFillUntilMaximumSize_Async(int maxSize) { var pool = new ObjectPool <MyPooledObject>(maxSize); var objectCount = maxSize * 4; var objects = new MyPooledObject[objectCount]; Parallel.For(0, objectCount, i => { objects[i] = pool.GetObject(); }); Parallel.For(0, objectCount, i => { objects[i].Dispose(); }); await Task.Delay(1000); Assert.AreEqual(maxSize, pool.ObjectsInPoolCount); }
public async Task ShouldSimplyWork(int maxSize) { const int keyCount = 4; var pool = new ParameterizedObjectPool <int, MyPooledObject>(maxSize); var objectCount = maxSize * keyCount; var objects = new MyPooledObject[objectCount]; Parallel.For(0, objectCount, i => { objects[i] = pool.GetObject(i % keyCount); }); Parallel.For(0, objectCount, i => { objects[i].Dispose(); }); await Task.Delay(1000); Assert.AreEqual(keyCount, pool.KeysInPoolCount); }
public async Task ShouldSimplyWork(int maxSize) { const int keyCount = 4; var pool = new ParameterizedObjectPool<int, MyPooledObject>(0, maxSize); var objectCount = maxSize * keyCount; var objects = new MyPooledObject[objectCount]; Parallel.For(0, objectCount, i => { objects[i] = pool.GetObject(i % keyCount); }); Parallel.For(0, objectCount, i => { objects[i].Dispose(); }); #if !NET40 await Task.Delay(1000); #else await TaskEx.Delay(1000); #endif Assert.AreEqual(keyCount, pool.KeysInPoolCount); }
public async Task ShouldFillUntilMaximumSize_Async(int maxSize) { var pool = new ObjectPool<MyPooledObject>(0, maxSize); var objectCount = maxSize * 4; var objects = new MyPooledObject[objectCount]; Parallel.For(0, objectCount, i => { objects[i] = pool.GetObject(); }); Parallel.For(0, objectCount, i => { objects[i].Dispose(); }); #if !NET40 await Task.Delay(1000); #else await TaskEx.Delay(1000); #endif pool.AdjustPoolSizeToBounds(AdjustMode.Minimum | AdjustMode.Maximum); Assert.AreEqual(maxSize, pool.ObjectsInPoolCount); }