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);
        }
Пример #3
0
        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));
        }
Пример #4
0
        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);
        }