public async Task DynamicObjectPool_duplicates_3_to_3() { var random = new Random(1); var myPool = new DynamicObjectPool <MyHeavyObject>(() => new MyHeavyObject(random.Next()), 3, 3); var obj1 = await myPool.GetObject(CancellationToken.None); var obj2 = new MyHeavyObject(1); var obj3Task = myPool.GetObject(CancellationToken.None); myPool.PutObject(obj1); var obj3 = await obj3Task; myPool.PutObject(obj2); myPool.PutObject(obj2); myPool.PutObject(obj2); myPool.PutObject(obj2); myPool.PutObject(obj2); myPool.PutObject(obj3); Assert.AreEqual(0, myPool.ObjectsDisposedCounter, "ObjectsDisposedCounter"); Assert.AreEqual(2, myPool.ObjectsCreatedCounter, "ObjectsCreatedCounter"); Assert.AreEqual(3, myPool.ObjectsMaxCounter, "ObjectsMaxCounter"); myPool.Dispose(); }
public async Task DynamicObjectPool_get_timeout() { var myPool = new DynamicObjectPool <MyHeavyObject>(() => new MyHeavyObject(1), 1, 1); CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(5)); var obj1 = await myPool.GetObject(CancellationToken.None); var obj2 = await myPool.GetObject(cancellationTokenSource.Token); Assert.IsNull(obj2); myPool.Dispose(); }