Esempio n. 1
0
        public void WhenInstanceIsRegisteredAsSingletonEnsureItIsNotGarbageCollected()
        {
            ITest iTest;
            BTest objB = new BTest();

            var uc1 = new QuickInjectContainer();

            uc1.RegisterType<ITest, ATest>();
            iTest = objB;

            uc1.RegisterInstance<ITest>(iTest);

            iTest = (ITest)uc1.Resolve(typeof(ITest));
            Assert.IsNotNull(iTest);

            iTest = null;

            GC.Collect();

            iTest = (ITest)uc1.Resolve(typeof(ITest));

            Assert.IsNotNull(iTest);

            iTest = (ITest)uc1.Resolve(typeof(ITest));

            Assert.IsNotNull(iTest);
        }
Esempio n. 2
0
        public void SetSingletonRegisterInstanceTwice()
        {
            IUnityContainer uc = new QuickInjectContainer();

            A aInstance = new A();
            uc.RegisterInstance<A>(aInstance).RegisterInstance<A>(aInstance);
            A obj = uc.Resolve<A>();
            A obj1 = uc.Resolve<A>();

            Assert.AreSame(obj, obj1);
        }
Esempio n. 3
0
        public void DuplicateRegInParentAndChild()
        {
            IA a = new A();
            IB b = new B(a);

            var parent = new QuickInjectContainer();
            parent.RegisterInstance(a).RegisterInstance(b);

            IUnityContainer child = parent.CreateChildContainer();

            var childA = child.Resolve<IA>();
            var parentA = parent.Resolve<IA>();

            var childB = child.Resolve<IB>();
            var parentB = parent.Resolve<IB>();

            Assert.IsTrue(childA == parentA);
            Assert.IsTrue(childB == parentB);
        }
Esempio n. 4
0
        public void RegisterTypeAfterRegisterInstanceDoesNotReusePreviousInstance()
        {
            var container = new QuickInjectContainer();

            var foo = new Foo();
            var foo2 = new Foo();
            container.RegisterInstance<IFoo>(foo);

            var returnedInstance = container.Resolve<IFoo>();

            var lifetime = new ContainerControlledLifetimeManager();
            lifetime.SetValue(foo2);

            container.RegisterType<IFoo>(lifetime);
            var returnedInstance2 = container.Resolve<IFoo>();

            Assert.AreNotSame(returnedInstance, returnedInstance2);
        }
Esempio n. 5
0
        public void ChildRegistrationIsChosenWhenResolvedFromChild()
        {
            IA aParent = new A();
            IA aChild = new A();

            var parent = new QuickInjectContainer();
            parent.RegisterInstance(aParent);

            IUnityContainer child = parent.CreateChildContainer();
            child.RegisterInstance(aChild);

            Assert.IsTrue(aChild == child.Resolve<IA>());
            Assert.IsTrue(aParent == parent.Resolve<IA>());
        }