Files

107 lines
3.0 KiB
C#

using NUnit.Framework;
using Assert = ModestTree.Assert;
namespace Zenject.Tests.Other
{
[TestFixture]
public class TestPoolableManager : ZenjectUnitTestFixture
{
static int CallCount;
public class Foo : IPoolable
{
public static int SpawnCallCount;
public static int DespawnCallCount;
public void OnSpawned()
{
SpawnCallCount = CallCount++;
}
public void OnDespawned()
{
DespawnCallCount = CallCount++;
}
}
public class Bar : IPoolable
{
public static int SpawnCallCount;
public static int DespawnCallCount;
public void OnSpawned()
{
SpawnCallCount = CallCount++;
}
public void OnDespawned()
{
DespawnCallCount = CallCount++;
}
}
[Test]
public void TestDefaultOrder()
{
Container.Bind<PoolableManager>().AsSingle();
Container.Bind<IPoolable>().To<Foo>().AsSingle();
Container.Bind<IPoolable>().To<Bar>().AsSingle();
var poolManager = Container.Resolve<PoolableManager>();
CallCount = 1;
Foo.SpawnCallCount = 0;
Foo.DespawnCallCount = 0;
Bar.SpawnCallCount = 0;
Bar.DespawnCallCount = 0;
poolManager.TriggerOnSpawned();
Assert.IsEqual(Foo.SpawnCallCount, 1);
Assert.IsEqual(Bar.SpawnCallCount, 2);
Assert.IsEqual(Foo.DespawnCallCount, 0);
Assert.IsEqual(Bar.DespawnCallCount, 0);
poolManager.TriggerOnDespawned();
Assert.IsEqual(Foo.SpawnCallCount, 1);
Assert.IsEqual(Bar.SpawnCallCount, 2);
Assert.IsEqual(Foo.DespawnCallCount, 4);
Assert.IsEqual(Bar.DespawnCallCount, 3);
}
[Test]
public void TestExplicitOrder()
{
Container.Bind<PoolableManager>().AsSingle();
Container.Bind<IPoolable>().To<Foo>().AsSingle();
Container.Bind<IPoolable>().To<Bar>().AsSingle();
Container.BindExecutionOrder<Foo>(2);
Container.BindExecutionOrder<Bar>(1);
var poolManager = Container.Resolve<PoolableManager>();
CallCount = 1;
Foo.SpawnCallCount = 0;
Foo.DespawnCallCount = 0;
Bar.SpawnCallCount = 0;
Bar.DespawnCallCount = 0;
poolManager.TriggerOnSpawned();
Assert.IsEqual(Foo.SpawnCallCount, 2);
Assert.IsEqual(Bar.SpawnCallCount, 1);
Assert.IsEqual(Foo.DespawnCallCount, 0);
Assert.IsEqual(Bar.DespawnCallCount, 0);
poolManager.TriggerOnDespawned();
Assert.IsEqual(Foo.SpawnCallCount, 2);
Assert.IsEqual(Bar.SpawnCallCount, 1);
Assert.IsEqual(Foo.DespawnCallCount, 3);
Assert.IsEqual(Bar.DespawnCallCount, 4);
}
}
}