using NUnit.Framework; using Assert = ModestTree.Assert; namespace Zenject.Tests.Conditions { [TestFixture] public class TestConditionsIdentifier : ZenjectUnitTestFixture { class Test0 { } class Test1 { public Test1( [Inject(Id ="foo")] Test0 name1) { } } class Test2 { [Inject(Id ="foo")] public Test0 name2 = null; } [Test] public void TestUnspecifiedNameConstructorInjection() { Container.Bind().AsTransient().NonLazy(); Container.Bind().AsTransient().NonLazy(); Assert.Throws( delegate { Container.Resolve(); }); } [Test] public void TestUnspecifiedNameFieldInjection() { Container.Bind().AsTransient().NonLazy(); Container.Bind().AsTransient().NonLazy(); Container.Bind().AsTransient().NonLazy(); Assert.Throws( delegate { Container.Resolve(); }); } [Test] public void TestSuccessConstructorInjectionString() { Container.Bind().AsTransient().NonLazy(); Container.Bind().AsTransient().NonLazy(); Container.Bind().FromInstance(new Test0()).NonLazy(); Container.Bind().WithId("foo").FromInstance(new Test0()).NonLazy(); // Should not throw exceptions Container.Resolve(); Assert.IsNotNull(Container.Resolve()); } [Test] public void TestSuccessFieldInjectionString() { Container.Bind().AsTransient().NonLazy(); Container.Bind().AsTransient().NonLazy(); Container.Bind().FromInstance(new Test0()).NonLazy(); Container.Bind().WithId("foo").FromInstance(new Test0()).NonLazy(); Assert.IsNotNull(Container.Resolve()); } class Test3 { public Test3( [Inject(Id ="TestValue2")] Test0 test0) { } } class Test4 { } [Test] public void TestFailConstructorInjectionEnum() { Container.Bind().AsTransient().NonLazy(); Container.Bind().AsTransient().NonLazy(); Container.Bind().AsTransient().NonLazy(); Container.Bind().FromInstance(new Test0()).NonLazy(); Container.Bind().WithId("TestValue1").FromInstance(new Test0()).NonLazy(); Assert.Throws( delegate { Container.Resolve(); }); } [Test] public void TestSuccessConstructorInjectionEnum() { Container.Bind().AsTransient().NonLazy(); Container.Bind().FromInstance(new Test0()).NonLazy(); Container.Bind().WithId("TestValue2").FromInstance(new Test0()).NonLazy(); // No exceptions Container.Resolve(); Assert.IsNotNull(Container.Resolve()); } [Test] public void TestFailFieldInjectionEnum() { Container.Bind().AsTransient().NonLazy(); Container.Bind().AsTransient().NonLazy(); Container.Bind().AsTransient().NonLazy(); Container.Bind().FromInstance(new Test0()).NonLazy(); Container.Bind().WithId("TestValue1").FromInstance(new Test0()).NonLazy(); Assert.Throws( delegate { Container.Resolve(); }); } [Test] public void TestSuccessFieldInjectionEnum() { Container.Bind().AsTransient().NonLazy(); Container.Bind().FromInstance(new Test0()).NonLazy(); Container.Bind().WithId("TestValue3").FromInstance(new Test0()).NonLazy(); Assert.IsNotNull(Container.Resolve()); } } }