public void Cull_ReducesObjectCount() { // setup PPocoPool.Clear <TestClass>(); // arrange int count = 9; int reduced = count - 1; List <TestClass> list = new List <TestClass>(); for (int i = 0; i < count; i++) { list.Add(PPocoPool.Get <TestClass>()); } for (int i = 0; i < count; i++) { PPocoPool.Put(list[0]); } list.Clear(); // act PPocoPool.SetLimit <TestClass>(poolSize: reduced); int available = PPocoPool.GetAvailable <TestClass>(); // assert Assert.AreEqual(reduced, available, "Available objects does not match expected count"); }
public void GetInUse_IndicatesUsedQuantity() { // setup PPocoPool.Clear <TestClass>(); // arrange int count = 3; TestClass[] gos = new TestClass[count]; // act for (int i = 0; i < count; i++) { gos[i] = PPocoPool.Get <TestClass>(); } int resultForUsed = PPocoPool.GetInUse <TestClass>(); for (int i = 0; i < count; i++) { PPocoPool.Put(gos[i]); } int resultForReclaimed = PPocoPool.GetInUse <TestClass>(); // assert Assert.AreEqual(count, resultForUsed, "Pool has wrong number of active objects"); Assert.AreEqual(0, resultForReclaimed, "Pool has wrong number of active objects"); }
public void GetAvailable_IndicatesUnusedQuantity() { // setup PPocoPool.Clear <TestClass>(); // arrange int count = 3; TestClass[] gos = new TestClass[count]; // act for (int i = 0; i < count; i++) { gos[i] = PPocoPool.Get <TestClass>(); } int resultForEmpty = PPocoPool.GetAvailable <TestClass>(); for (int i = 0; i < count; i++) { PPocoPool.Put(gos[i]); } int resultForReclaimed = PPocoPool.GetAvailable <TestClass>(); // assert Assert.AreEqual(0, resultForEmpty, "Pool not empty"); Assert.AreEqual(count, resultForReclaimed, "Pool missing reclaimed objects"); }
public void Put_DestroysNonPoolObject() { // setup PPocoPool.Clear <TestClass>(); // arrange Exception nonPoolObject = new Exception(); // act bool result = PPocoPool.Put(nonPoolObject); // assert Assert.IsFalse(result, "Pool indicated object was reclaimed."); }
public void Put_ReturnsObjectToPool() { // setup PPocoPool.Clear <TestClass>(); // arrange TestClass instance = PPocoPool.Get <TestClass>(); int available = PPocoPool.GetAvailable <TestClass>(); // act bool putResult = PPocoPool.Put(instance); int result = PPocoPool.GetAvailable <TestClass>(); // assert Assert.IsTrue(putResult, "Pool indicated object was not reclaimed"); Assert.AreEqual(available + 1, result, "Available object count incorrect"); }
public void Get_PoolProvidesExistingObject() { // setup PPocoPool.Clear <TestClass>(); // arrange TestClass first, second; int firstHash, secondHash; // act first = PPocoPool.Get <TestClass>(); firstHash = first.GetHashCode(); PPocoPool.Put(first); second = PPocoPool.Get <TestClass>(); secondHash = second.GetHashCode(); // assert Assert.AreEqual(firstHash, secondHash, "Hashcodes do not match"); }
public void SetLimit_AssignsPersistenceLimit() { // setup PPocoPool.Clear <TestClass>(); // arrange float duration = 0f; PPocoPool.SetLimit <TestClass>(staleDuration: duration); // act TestClass instance = PPocoPool.Get <TestClass>(); PPocoPool.Put(instance); // Using a duration of '0' should trigger the time-based culling. int available = PPocoPool.GetAvailable <TestClass>(); // assert Assert.AreEqual(0, available, "Pool kept objects past expiration"); }