public static void PoolCleanDoesRemoveAvailableInstances(int spawnCount, int deactivateCount) { IPool pool = new DemoPool(); List <DemoPooledObjectInstance> _instances = new List <DemoPooledObjectInstance>(); // Spawn instances for (int i = 0; i < spawnCount; i++) { _instances.Add((DemoPooledObjectInstance)pool.GetNext()); } // Deactivate instances for (int i = 0; i < Math.Min(deactivateCount, _instances.Count); i++) { _instances[i].RelenquishFromInstance(); } // Clean pool pool.Clean(); Assert.AreEqual(Math.Max(spawnCount - deactivateCount, 0), pool.instanceCount, "Pool cleaning does not remove unused instances as expected!"); }