Example #1
0
        public void Clear_DestroysAllObjects()
        {
            //  setup
            PPocoPool.Clear <TestClass>();

            //  arrange
            int count = 9;

            //  act
            PPocoPool.Prewarm <TestClass>(count);
            PPocoPool.Clear <TestClass>();
            int total = PPocoPool.GetAvailable <TestClass>() + PPocoPool.GetInUse <TestClass>();

            //  assert
            Assert.AreEqual(0, total, "Pool contains objects");
        }
Example #2
0
        public void SetNoStaleDuration_RemovesTimestamps()
        {
            //  setup
            PPocoPool.Clear <TestClass>();

            //  arrange
            float duration = 1;    //  seconds

            PPocoPool.SetLimit <TestClass>(staleDuration: duration);
            int count = 9;

            //  act
            PPocoPool.Prewarm <TestClass>(count);
            PPocoPool.SetLimit <TestClass>(staleDuration: PPocoPool.UNLIMITED);
            Delay(duration + 0.1f);
            int available = PPocoPool.GetAvailable <TestClass>();

            //  assert
            Assert.AreEqual(count, available, "Wrong number available");
        }
Example #3
0
        public void Prewarm_CreatesObjects()
        {
            //  setup
            PPocoPool.Clear <TestClass>();

            //  arrange
            int   count    = 9;
            float duration = 7; //  seconds

            //  act
            PPocoPool.Prewarm <TestClass>(count, duration);
            Delay(duration * 0.5f);
            int initial = PPocoPool.GetAvailable <TestClass>();

            Delay(duration);
            int complete = PPocoPool.GetAvailable <TestClass>();

            //  assert
            Assert.IsTrue(initial < count, "Partial generaton contains too many objects");
            Assert.AreEqual(count, complete, "Complete generation contains wrong number of objects");
        }
Example #4
0
        public void Expire_ReducesObjectCount()
        {
            //  setup
            PPocoPool.Clear <TestClass>();

            //  arrange
            float longStale  = 9;
            float shortStale = 1;
            int   count      = 7;

            PPocoPool.SetLimit <TestClass>(staleDuration: longStale);
            PPocoPool.Prewarm <TestClass>(count, duration: 0);

            //  act
            PPocoPool.SetLimit <TestClass>(staleDuration: shortStale);
            Delay(shortStale + 0.1f);
            PPocoPool.Expire <TestClass>();
            int available = PPocoPool.GetAvailable <TestClass>();

            //  assert
            Assert.AreEqual(0, available, "Pool did not expire unused objects");
        }
Example #5
0
        public void SetNoQuantityLimit_RemovesLimit()
        {
            //  setup
            PPocoPool.Clear <TestClass>();

            //  arrange
            int count             = 9;
            int limit             = count - 1;
            List <TestClass> list = new List <TestClass>();

            //  act
            PPocoPool.SetLimit <TestClass>(poolSize: limit);
            PPocoPool.Prewarm <TestClass>(count);
            int countWhileLimited = PPocoPool.GetAvailable <TestClass>();

            PPocoPool.SetLimit <TestClass>(poolSize: PPool.UNLIMITED);
            PPocoPool.Prewarm <TestClass>(count);
            int countUnlimited = PPocoPool.GetAvailable <TestClass>();

            //  assert
            Assert.AreEqual(limit, countWhileLimited, "Object creation not correctly limited");
            Assert.AreEqual(count, countUnlimited, "Unlimited object creation count incorrect");
        }