Example #1
0
        public void DoesInjectTransientFromInheritedContainer()
        {
            Container containerA = new Container();
            Container containerB = new Container();

            containerA.Bind <ISomeTypeOne>().To <SomeTypeOne>();
            containerB.Inherit(containerA);
            containerB.Bind <ISomeTypeTwo>().To <SomeTypeTwo>().AsSingleton();

            ISomeTypeOne one = containerB.Resolve <ISomeTypeOne>();

            Assert.IsNotNull(one.Two, "two did not resolve");
        }
Example #2
0
        public void DoesNotInjectSingletonFromInheritedContainer()
        {
            Container containerA = new Container();
            Container containerB = new Container();

            containerA.Bind <ISomeTypeOne>().To <SomeTypeOne>().AsSingleton(); // Singleton should always resolve from parent container
            containerB.Inherit(containerA);
            containerB.Bind <ISomeTypeTwo>().To <SomeTypeTwo>().AsSingleton();

            ISomeTypeOne one = containerB.Resolve <ISomeTypeOne>();

            Assert.IsNull(one.Two, "two did resolve");
        }
Example #3
0
        public void DoesOverrideInheritedBindingWhenBoundAsTransient()
        {
            Container containerA = new Container();
            Container containerB = new Container();

            containerA.Bind <ISomeTypeOne>().To <SomeTypeOne>().AsTransient();
            containerA.Bind <ISomeTypeTwo>().To <SomeTypeTwo>().AsTransient();
            containerB.Inherit(containerA);
            containerB.Bind <ISomeTypeTwo>().To <AnotherTypeTwo>().AsTransient();

            ISomeTypeOne one = containerB.Resolve <ISomeTypeOne>();

            Assert.IsNotNull(one.Two, "two did not resolve");
            Assert.IsInstanceOfType(one.Two, typeof(AnotherTypeTwo), "ContainerB did not override inhjected type");
        }
Example #4
0
        public void DoesResolveFromInheritedContainer()
        {
            Container containerA = new Container();
            Container containerB = new Container();

            containerA.Bind <ISomeTypeTwo>().To <SomeTypeTwo>().AsSingleton();
            containerB.Inherit(containerA);
            containerB.Bind <ISomeTypeOne>().To <SomeTypeOne>().AsSingleton();

            ISomeTypeOne one = containerB.Resolve <ISomeTypeOne>();
            ISomeTypeTwo two = containerA.Resolve <ISomeTypeTwo>();

            //Assert.IsNotNull(one);
            //Assert.IsNotNull(one.Two);
            Assert.AreEqual(one.Two, two);
        }
Example #5
0
        public void DoesResolveTypeWithObjectCategoryUsingPrimitiveInjectAttribute()
        {
            Container container = new Container();

            container.Bind <ISomeTypeOne>().To <SomeTypeOneCatPrimitive>();
            container.Bind <ISomeTypeTwo>().WithCategory(SomeTypeOneCatPrimitive.Category).To <SomeTypeTwo>();

            // Resolve one... should be injected
            ISomeTypeOne one = container.Resolve <ISomeTypeOne>();

            Assert.IsNotNull(one);
            Assert.IsNotNull(one.Two);

            // Ensure we can inject additional "Extra" dependencies...
            Assert.IsNotNull(one.Two.Container);

            container = null;
        }
Example #6
0
        public void DoesResolveTypeWithCategory()
        {
            Container container = new Container();

            // Transient bindings...
            container.Bind <ISomeTypeOne>().To <SomeTypeOneCat>();
            container.Bind <ISomeTypeTwo>().WithCategory("my-category").To <SomeTypeTwo>();

            // Resolve one... should be injected
            ISomeTypeOne one = container.Resolve <ISomeTypeOne>();

            Assert.IsNotNull(one);
            Assert.IsNotNull(one.Two);

            // Ensure we can inject additional "Extra" dependencies...
            Assert.IsNotNull(one.Two.Container);

            container = null;
        }
Example #7
0
        public void DoesResolveTypeWhenGenericBindUsed()
        {
            Container container = new Container();

            // Transient bindings...
            container.Bind <ISomeTypeOne, SomeTypeOne>();
            container.Bind <ISomeTypeTwo, SomeTypeTwo>();

            // Resolve one... should be injected
            ISomeTypeOne one = container.Resolve <ISomeTypeOne>();

            Assert.IsNotNull(one);
            Assert.IsNotNull(one.Two);

            // Ensure we can inject additional "Extra" dependencies...
            Assert.IsNotNull(one.Two.Container);

            container = null;
        }
Example #8
0
        public void DoesResolveSingleton()
        {
            Container container = new Container();

            // Transient & Singleton binding...
            container.Bind <ISomeTypeOne>().To <SomeTypeOne>();
            container.Bind <ISomeTypeTwo>().To <SomeTypeTwo>().AsSingleton();

            // Resolve one... should be injected
            ISomeTypeOne one = container.Resolve <ISomeTypeOne>();

            Assert.IsNotNull(one);
            Assert.IsNotNull(one.Two);

            // Resolve singleton
            ISomeTypeTwo twoTest2 = container.Resolve <ISomeTypeTwo>();

            Assert.AreEqual(one.Two, twoTest2);

            container = null;
        }