public void ObjectPool_ObserverReceivesDespawnedEvent() { var numToSpawn = 3; var poolSize = 5; var observer = new TestPoolObserver(); var parent = new GameObject(); var pool = new ObjectPool <TestComponent>(parent, parent, poolSize, observer); var spawnedItems = new Queue <TestComponent>(); for (int i = 0; i < numToSpawn; i++) { var item = pool.Spawn(Vector3.zero, Quaternion.identity); spawnedItems.Enqueue(item); } for (int i = 0; i < numToSpawn; i++) { var item = spawnedItems.Dequeue(); pool.Despawn(item); Assert.IsTrue(observer.LastItemDespawned == item); Assert.IsTrue(observer.LastPool == pool); } Assert.IsTrue(observer.ItemDespawnedCount == numToSpawn); Assert.IsTrue(pool.Count >= numToSpawn); }
public void ObjectPool_ObserverReceivesCreatedEvent() { var poolSize = 5; var observer = new TestPoolObserver(); var parent = new GameObject(); var pool = new ObjectPool <TestComponent>(parent, parent, poolSize, observer); Assert.IsTrue(observer.ItemCreatedCount == poolSize); Assert.IsTrue(observer.ItemSpawnedCount == 0); Assert.IsTrue(observer.ItemDespawnedCount == 0); Assert.IsTrue(observer.LastItemCreated != null); }
public void ObjectPool_UnspawnedItemIsInactive() { var poolSize = 5; var observer = new TestPoolObserver(); var parent = new GameObject(); var pool = new ObjectPool <TestComponent>(parent, parent, poolSize, observer); Assert.IsFalse(observer.LastItemCreated.isActiveAndEnabled); var item = pool.Spawn(Vector3.zero, Quaternion.identity); Assert.IsTrue(observer.LastItemSpawned.isActiveAndEnabled); item.Despawn(); Assert.IsFalse(observer.LastItemDespawned.isActiveAndEnabled); }