private static void AssertInstanceIsValid(GameObjectPool pool, GameObjectBehaviour instance) { Assert.That(instance.Pool, Is.EqualTo(pool), nameof(instance.Pool)); Assert.That(instance.CachedTransform, Is.EqualTo(instance.transform), nameof(instance.CachedTransform)); Assert.That(instance.CachedGameObject, Is.EqualTo(instance.gameObject), nameof(instance.CachedGameObject)); Assert.That(instance.IsPooled, Is.True, nameof(instance.IsPooled)); }
public void GivenActivePrefab_WhenInstantiated_ThenCachesAreValid() { GameObjectBehaviour prefab = new GameObject().AddComponent <GameObjectBehaviour>(); GameObjectBehaviour instance = Object.Instantiate(prefab); Assert.That(instance.CachedGameObject, Is.Not.Null); Assert.That(instance.CachedTransform, Is.Not.Null); }
public void GivenGameObjectWithBehaviour_WhenGetOrCreateBehaviour_ThenBehaviourIsStillUnique() { GameObject gameObject = new GameObject("Test", typeof(GameObjectBehaviour)); GameObjectBehaviour behaviour = gameObject.GetOrCreateBehaviour(); Assert.That(behaviour.gameObject, Is.EqualTo(gameObject)); Assert.That(gameObject.GetComponents <GameObjectBehaviour>().Length, Is.EqualTo(1)); }
public void GivenGameObjectWithoutBehaviour_WhenGetOrCreateBehaviour_ThenBehaviourIsValid() { GameObject gameObject = new GameObject(); GameObjectBehaviour behaviour = gameObject.GetOrCreateBehaviour(); Assert.That(behaviour, Is.Not.Null); Assert.That(behaviour.gameObject, Is.EqualTo(gameObject)); }
public void GivenActivePrefab_AndHasPool_WhenInstantiated_ThenIsPooled() { GameObjectBehaviour prefab = new GameObject().AddComponent <GameObjectBehaviour>(); prefab.Pool = new GameObject().AddComponent <GameObjectPool>(); GameObjectBehaviour instance = Object.Instantiate(prefab); Assert.That(instance.IsPooled, Is.True); }
public IEnumerator GivenLoadedPool_AndInactivePrefab_WhenSpawned_ThenInstanceIsSpawned() { _poolWithInactivePrefab.MaxCapacity = 1; _poolWithInactivePrefab.PreloadCount = 1; yield return(_poolWithInactivePrefab.LoadAsync().ToCoroutine()); GameObjectBehaviour instance = _poolWithInactivePrefab.Spawn(); Assert.That(instance.IsSpawned, Is.True); }
public IEnumerator GivenLoadedPool_AndPoolHasCapacity_WhenDespawned_ThenResultIsDespawned() { _pool.MaxCapacity = 1; _pool.PreloadCount = 1; yield return(_pool.LoadAsync().ToCoroutine()); GameObjectBehaviour instance = _pool.Spawn(); Assert.That(_pool.Despawn(instance), Is.EqualTo(GameObjectPool.DespawnResult.Despawned)); Assert.That(instance.IsSpawned, Is.False); }
public void GivenInactivePrefab_WhenInstantiated_ThenCachesAreInvalid() { GameObject prefab = new GameObject(); prefab.SetActive(false); GameObjectBehaviour prefabBehaviour = prefab.AddComponent <GameObjectBehaviour>(); GameObjectBehaviour instance = Object.Instantiate(prefabBehaviour); Assert.That(instance.CachedGameObject, Is.Null); Assert.That(instance.CachedTransform, Is.Null); }
public void GivenActiveInstance_WhenDisabled_ThenActiveStateChangedTriggers_AndStateIsFalse() { const string logFormat = "OnActivateStateChanged.state = {0}"; GameObjectBehaviour prefab = new GameObject().AddComponent <GameObjectBehaviour>(); GameObjectBehaviour instance = Object.Instantiate(prefab); instance.OnActiveStateChanged += delegate(GameObjectBehaviour sender, bool state) { Debug.LogFormat(logFormat, state); }; instance.CachedGameObject.SetActive(false); LogAssert.Expect(LogType.Log, string.Format(logFormat, false)); }
public IEnumerator GivenLoadedPool_AndSpawnedInstance_WhenDespawned_AndSpawned_ThenInstancesAreTheSame() { _pool.PreloadCount = 1; _pool.MaxCapacity = 1; yield return(_pool.LoadAsync().ToCoroutine()); GameObjectBehaviour instanceA = _pool.Spawn(); _pool.Despawn(instanceA); GameObjectBehaviour instanceB = _pool.Spawn(); Assert.That(instanceA, Is.EqualTo(instanceB)); Assert.That(instanceA.IsSpawned, Is.True); }