public void RemovingServiceTwiceFiresEventOnce()
        {
            int EventFireCount = 0;
            TestableServiceCollection services = CreateServiceCollection();

            services.Removed += delegate { EventFireCount++; };
            services.AddNew <object>();
            services.Remove(typeof(object));
            services.Remove(typeof(object));

            Assert.AreEqual(1, EventFireCount);
        }
        public void RemovingSpecificServiceTypeRegistrationsRemovesOnlyThoseDependencyKeys()
        {
            TestableServiceCollection collection = CreateServiceCollection();
            string str = "Hello world";

            collection.Add <string>(str);
            collection.Add <object>(str);

            collection.Remove(typeof(object));
            Assert.IsNull(collection.Locator.Get(new DependencyResolutionLocatorKey(typeof(object), null)));
            Assert.IsNotNull(collection.Locator.Get(new DependencyResolutionLocatorKey(typeof(string), null)));

            collection.Remove(typeof(string));
            Assert.IsNull(collection.Locator.Get(new DependencyResolutionLocatorKey(typeof(string), null)));
        }
        public void RemovingMultiplyRegisteredServiceInstanceDoesntFireEventUntilLastInstanceIsRemoved()
        {
            bool   EventFired = false;
            string str        = "Hello world";
            TestableServiceCollection services = CreateServiceCollection();

            services.Removed += delegate { EventFired = true; };

            services.Add <string>(str);
            services.Add <object>(str);

            services.Remove <object>();
            Assert.IsFalse(EventFired);
            services.Remove <string>();
            Assert.IsTrue(EventFired);
        }
        public void RemovingServiceAllowsNewServiceToBeRegisteredForGivenServiceType_Generic()
        {
            TestableServiceCollection services = CreateServiceCollection();

            services.AddNew <object>();
            services.Remove <object>();
            services.AddNew <object>();
        }
        private WeakReference RemovingServiceRemovesStrongReferenceToService_TestHelper()
        {
            TestableServiceCollection services = CreateServiceCollection();
            WeakReference             wr       = new WeakReference(services.AddNew <object>());

            services.Remove(typeof(object));
            return(wr);
        }
        public void RemovingServiceAllowsNewServiceToBeRegisteredForGivenServiceType()
        {
            TestableServiceCollection services = CreateServiceCollection();

            services.AddNew(typeof(object));
            services.Remove(typeof(object));
            services.AddNew(typeof(object));
        }
        public void RemovingMultipleRegisteredServiceOnlyRemovesStrongReferenceWhenLastInstanceIsGone_Generic()
        {
            TestableServiceCollection services = CreateServiceCollection();
            MockDataObject            mdo      = new MockDataObject();
            WeakReference             wr       = new WeakReference(mdo);

            services.Add <IMockDataObject>(mdo);
            services.Add <IMockDataObject2>(mdo);
            mdo = null;

            services.Remove <IMockDataObject>();
            GC.Collect();
            Assert.IsNotNull(wr.Target);

            services.Remove <IMockDataObject2>();
            GC.Collect();
            Assert.IsNull(wr.Target);
        }
        public void CanRemoveService_Generic()
        {
            TestableServiceCollection services = CreateServiceCollection();

            services.Add <MockDataObject>(new MockDataObject());
            services.Remove <MockDataObject>();

            Assert.IsNull(services.Get <MockDataObject>());
        }
        public void CanRemoveService()
        {
            TestableServiceCollection services = CreateServiceCollection();

            services.Add(typeof(MockDataObject), new MockDataObject());
            services.Remove(typeof(MockDataObject));

            Assert.IsNull(services.Get(typeof(MockDataObject)));
        }
        public void RemovingItemRemovesTypeIdPairFromLocator()
        {
            TestableServiceCollection collection = CreateServiceCollection();
            object obj = collection.AddNew <object>();

            collection.Remove(typeof(object));

            Assert.IsNull(collection.Locator.Get(new DependencyResolutionLocatorKey(typeof(object), null)));
        }
        public void RemovingServiceNotInContainerDoesntFireEvent()
        {
            bool EventFired = false;
            TestableServiceCollection services = CreateServiceCollection();

            services.Removed += delegate { EventFired = true; };
            services.Remove(typeof(object));

            Assert.IsFalse(EventFired);
        }
        public void RemovingServiceRemovesStrongReferenceToService()
        {
            TestableServiceCollection services = CreateServiceCollection();
            WeakReference             wr       = new WeakReference(services.AddNew <object>());

            services.Remove(typeof(object));
            GC.Collect();

            Assert.IsNull(wr.Target);
        }
        private void RemovingMultipleRegisteredServiceOnlyRemovesStrongReferenceWhenLastInstanceIsGone_Generic_TestHelper2(out TestableServiceCollection services, out WeakReference wr)
        {
            services = CreateServiceCollection();
            MockDataObject mdo = new MockDataObject();

            wr = new WeakReference(mdo);
            services.Add <IMockDataObject>(mdo);
            services.Add <IMockDataObject2>(mdo);
            mdo = null;

            services.Remove <IMockDataObject>();
        }
        public void RemovingServiceCausesItToBeTornDown_Generic()
        {
            TestableServiceCollection services = CreateServiceCollection();
            MockTearDownStrategy      strategy = new MockTearDownStrategy();

            services.Builder.Strategies.Add(strategy, WCSFBuilderStage.PreCreation);

            services.AddNew <object>();
            services.Remove <object>();

            Assert.IsTrue(strategy.TearDownCalled);
        }
        public void RemovingServiceFiresEvent()
        {
            bool   EventFired     = false;
            object ServiceInEvent = null;
            TestableServiceCollection services = CreateServiceCollection();

            services.Removed += delegate(object sender, DataEventArgs <object> e) { EventFired = true; ServiceInEvent = e.Data; };
            object obj = services.AddNew <object>();

            services.Remove(typeof(object));

            Assert.IsTrue(EventFired);
            Assert.AreSame(obj, ServiceInEvent);
        }
Esempio n. 16
0
        public void RemovingServiceRemovesStrongReferenceToService()
        {
            var wRef2 = CallInItsOwnScope(() =>
            {
                TestableServiceCollection services = CreateServiceCollection();
                WeakReference wr = new WeakReference(services.AddNew <object>());
                services.Remove(typeof(object));
                return(wr);
            });

            GC.Collect();

            Assert.IsNull(wRef2.Target);
        }
Esempio n. 17
0
        public void RemovingMultipleRegisteredServiceOnlyRemovesStrongReferenceWhenLastInstanceIsGone_Generic()
        {
            TestableServiceCollection services = CreateServiceCollection();
            var wRefwr = CallInItsOwnScope(() =>
            {
                MockDataObject mdo = new MockDataObject();
                WeakReference wr   = new WeakReference(mdo);
                services.Add <IMockDataObject>(mdo);
                services.Add <IMockDataObject2>(mdo);
                mdo = null;
                return(wr);
            });


            services.Remove <IMockDataObject>();
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Assert.IsNotNull(wRefwr.Target);

            services.Remove <IMockDataObject2>();
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Assert.IsNull(wRefwr.Target);
        }
        public void DemandAddedServiceEventsAreFiredAtTheRightTime()
        {
            bool AddedEventFired               = false;
            bool RemovedEventFired             = false;
            TestableServiceCollection services = CreateServiceCollection();

            services.Added   += delegate { AddedEventFired = true; };
            services.Removed += delegate { RemovedEventFired = true; };

            services.AddOnDemand <object>();
            Assert.IsFalse(AddedEventFired);
            Assert.IsFalse(RemovedEventFired);

            services.Get <object>();
            Assert.IsTrue(AddedEventFired);
            Assert.IsFalse(RemovedEventFired);

            services.Remove <object>();
            Assert.IsTrue(RemovedEventFired);
        }