using NUnit.Framework; using Assert = ModestTree.Assert; namespace Zenject.Tests.Other { [TestFixture] public class TestBindingInheritanceMethod : ZenjectUnitTestFixture { [Test] public void TestNoCopy() { Container.Bind().AsSingle(); var sub1 = Container.CreateSubContainer(); Assert.IsEqual(sub1.Resolve(), Container.Resolve()); } [Test] public void TestCopyIntoAll1() { Container.Bind().AsSingle().CopyIntoAllSubContainers(); var sub1 = Container.CreateSubContainer(); Assert.IsNotEqual(sub1.Resolve(), Container.Resolve()); } [Test] public void TestCopyIntoAll2() { Container.Bind().To().FromResolve().CopyIntoAllSubContainers(); Container.Bind().AsSingle(); var sub1 = Container.CreateSubContainer(); Assert.IsEqual(Container.ResolveAll().Count, 1); Assert.IsEqual(sub1.ResolveAll().Count, 2); } [Test] public void TestCopyDirect1() { Container.Bind().AsSingle().CopyIntoDirectSubContainers(); var sub1 = Container.CreateSubContainer(); var sub2 = sub1.CreateSubContainer(); Assert.That(Container.HasBindingId(typeof(Foo), null, InjectSources.Local)); Assert.That(sub1.HasBindingId(typeof(Foo), null, InjectSources.Local)); Assert.That(!sub2.HasBindingId(typeof(Foo), null, InjectSources.Local)); } [Test] public void TestMoveDirect1() { Container.Bind().AsSingle().MoveIntoDirectSubContainers(); var sub1 = Container.CreateSubContainer(); var sub2 = sub1.CreateSubContainer(); Assert.That(!Container.HasBindingId(typeof(Foo), null, InjectSources.Local)); Assert.That(sub1.HasBindingId(typeof(Foo), null, InjectSources.Local)); Assert.That(!sub2.HasBindingId(typeof(Foo), null, InjectSources.Local)); } [Test] public void TestMoveAll() { Container.Bind().AsSingle().MoveIntoAllSubContainers(); var sub1 = Container.CreateSubContainer(); var sub2 = sub1.CreateSubContainer(); Assert.That(!Container.HasBindingId(typeof(Foo), null, InjectSources.Local)); Assert.That(sub1.HasBindingId(typeof(Foo), null, InjectSources.Local)); Assert.That(sub2.HasBindingId(typeof(Foo), null, InjectSources.Local)); } public interface IBar { } public class Foo { } public class Bar : IBar { } } }