123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- using NUnit.Framework;
- using Assert = ModestTree.Assert;
- namespace Zenject.Tests
- {
- [TestFixture]
- public class TestValidation
- {
- DiContainer Container
- {
- get; set;
- }
- [SetUp]
- public void Setup()
- {
- Container = new DiContainer(true);
- Container.Settings = new ZenjectSettings(
- ValidationErrorResponses.Throw, RootResolveMethods.All);
- }
- [Test]
- public void TestFailure()
- {
- Container.Bind<Bar>().AsSingle();
- Assert.Throws(() => Container.ResolveRoots());
- }
- [Test]
- public void TestSuccess()
- {
- Container.Bind<Foo>().AsSingle();
- Container.Bind<Bar>().AsSingle();
- Container.ResolveRoots();
- }
- [Test]
- public void TestNumCalls()
- {
- Gorp.CallCount = 0;
- Container.BindInterfacesAndSelfTo<Gorp>().AsSingle();
- Container.ResolveRoots();
- Assert.IsEqual(Gorp.CallCount, 1);
- }
- [Test]
- public void TestFactoryFail()
- {
- Container.BindFactory<Bar, Bar.Factory>();
- Assert.Throws(() => Container.ResolveRoots());
- }
- [Test]
- public void TestFactorySuccess()
- {
- Container.Bind<Foo>().AsSingle();
- Container.BindFactory<Bar, Bar.Factory>();
- Container.ResolveRoots();
- }
- [Test]
- public void TestSubContainerMethodSuccess()
- {
- Container.Bind<Qux>().FromSubContainerResolve().ByMethod(
- container =>
- {
- container.Bind<Qux>().AsSingle();
- container.Bind<Foo>().AsSingle();
- container.Bind<Bar>().AsSingle();
- })
- .AsSingle();
- Container.ResolveRoots();
- }
- [Test]
- public void TestSubContainerMethodFailure()
- {
- Container.Bind<Qux>().FromSubContainerResolve().ByMethod(
- container =>
- {
- container.Bind<Qux>().AsSingle();
- container.Bind<Bar>().AsSingle();
- })
- .AsSingle();
- Assert.Throws(() => Container.ResolveRoots());
- }
- [Test]
- public void TestSubContainerInstallerFailure()
- {
- Container.Bind<Qux>().FromSubContainerResolve().ByInstaller<QuxInstaller>().AsSingle();
- Assert.Throws(() => Container.ResolveRoots());
- }
- [Test]
- public void TestLazyFail()
- {
- Container.Bind<Jaze>().AsSingle();
- Assert.Throws(() => Container.ResolveRoots());
- }
- [Test]
- public void TestLazySuccess()
- {
- Container.Bind<Qux>().AsSingle();
- Container.Bind<Jaze>().AsSingle();
- Container.ResolveRoots();
- }
- [Test]
- public void TestMemoryPoolFailure()
- {
- Container.BindMemoryPool<Bar, Bar.Pool>();
- Assert.Throws(() => Container.ResolveRoots());
- }
- [Test]
- public void TestMemoryPoolSuccess()
- {
- Container.Bind<Foo>().AsSingle();
- Container.BindMemoryPool<Bar, Bar.Pool>();
- Container.ResolveRoots();
- }
- [Test]
- public void TestCustomValidatable()
- {
- Container.BindInterfacesAndSelfTo<Loy>().AsSingle().NonLazy();
- Container.ResolveRoots();
- Assert.IsEqual(Container.Resolve<Loy>().CallCount, 1);
- }
- public class Loy : IValidatable, IInitializable, ITickable
- {
- public int CallCount
- {
- get; set;
- }
- public void Initialize()
- {
- }
- public void Tick()
- {
- }
- public void Validate()
- {
- CallCount++;
- }
- }
- public class Jaze
- {
- [Inject]
- public LazyInject<Qux> Qux;
- }
- public class QuxInstaller : Installer<QuxInstaller>
- {
- public override void InstallBindings()
- {
- Container.Bind<Qux>().AsSingle();
- Container.Bind<Bar>().AsSingle();
- }
- }
- public class Qux
- {
- }
- public class Bar
- {
- public Bar(Foo foo)
- {
- }
- public class Factory : PlaceholderFactory<Bar>
- {
- }
- public class Pool : MemoryPool<Bar>
- {
- }
- }
- public class Foo
- {
- }
- public interface IGorp
- {
- }
- public class Gorp : IGorp, IValidatable
- {
- public static int CallCount
- {
- get; set;
- }
- public void Validate()
- {
- CallCount++;
- }
- }
- }
- }
|