public void CanCreateServiceRegisteredAsOtherType()
        {
            TestableServiceCollection services = CreateServiceCollection();

            object svc = services.AddNew(typeof(MockDataObject), typeof(IMockDataObject));

            Assert.IsNotNull(svc);
            Assert.IsNull(services.Get(typeof(MockDataObject)));
            Assert.AreSame(svc, services.Get(typeof(IMockDataObject)));
        }
        public void RemovingServiceNotInWorkItemDoesntFireEvent()
        {
            bool EventFired = false;
            TestableServiceCollection services = CreateServiceCollection();

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

            Assert.IsFalse(EventFired);
        }
        public void CanAskForBuilderToEnsureServiceExists()
        {
            TestableServiceCollection services = CreateServiceCollection();
            MockDataObject            svc      = new MockDataObject();

            services.Add(typeof(MockDataObject), svc);
            MockDataObject result = (MockDataObject)services.Get(typeof(MockDataObject), true);

            Assert.AreSame(svc, result);
        }
        public void AddingServiceToWorkItemAllowsRetrievalOfService()
        {
            TestableServiceCollection services = CreateServiceCollection();
            MockDataObject            svc      = new MockDataObject();

            services.Add(typeof(MockDataObject), svc);
            MockDataObject result = (MockDataObject)services.Get(typeof(MockDataObject));

            Assert.AreSame(svc, result);
        }
Esempio n. 5
0
        public void RemovingServiceRemovesStrongReferenceToService()
        {
            TestableServiceCollection services = CreateServiceCollection();
            WeakReference             wr       = new WeakReference(services.AddNew <object>());

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

            Assert.IsNull(wr.Target);
        }
        public void CanCreateServiceRegisteredAsOtherType_Generic()
        {
            TestableServiceCollection services = CreateServiceCollection();

            MockDataObject svc = services.AddNew <MockDataObject, IMockDataObject>();

            Assert.IsNotNull(svc);
            Assert.IsNull(services.Get <MockDataObject>());
            Assert.AreSame(svc, services.Get <IMockDataObject>());
        }
        public void DemandAddedServiceFromParentGetsReplacedInParentEvenWhenAskedForFromChild_Generic()
        {
            TestableServiceCollection parent = CreateServiceCollection();
            TestableServiceCollection child  = new TestableServiceCollection(parent);

            parent.AddOnDemand <MockDemandService>();
            MockDemandService svc = child.Get <MockDemandService>();

            Assert.AreSame(svc, parent.Locator.Get(new DependencyResolutionLocatorKey(typeof(MockDemandService), null)));
        }
        public void CanAddDemandAddServiceOfOneTypeAndRegisterAsOtherType()
        {
            TestableServiceCollection services = CreateServiceCollection();

            services.AddOnDemand(typeof(MockDemandService), typeof(IMockDemandService));

            Assert.IsFalse(services.Contains <MockDemandService>());
            Assert.IsTrue(services.Contains <IMockDemandService>());
            Assert.IsNull(services.Get <MockDemandService>());
            Assert.IsNotNull(services.Get <IMockDemandService>());
        }
        public void CanCreateServiceInChildWhenServiceExistsInParent_Generic()
        {
            TestableServiceCollection services      = CreateServiceCollection();
            TestableServiceCollection childServices = new TestableServiceCollection(services);

            MockDataObject parentService = services.AddNew <MockDataObject>();
            MockDataObject childService  = childServices.AddNew <MockDataObject>();

            Assert.AreSame(parentService, services.Get <MockDataObject>());
            Assert.AreSame(childService, childServices.Get <MockDataObject>());
        }
        public void CanCreateServiceInChildWhenServiceExistsInParent()
        {
            TestableServiceCollection services      = CreateServiceCollection();
            TestableServiceCollection childServices = new TestableServiceCollection(services);

            object parentService = services.AddNew(typeof(MockDataObject));
            object childService  = childServices.AddNew(typeof(MockDataObject));

            Assert.AreSame(parentService, services.Get(typeof(MockDataObject)));
            Assert.AreSame(childService, childServices.Get(typeof(MockDataObject)));
        }
        public void AddingAServiceTwiceFiresEventOnce()
        {
            int    EventFireCount = 0;
            string str            = "Hello world";
            TestableServiceCollection services = CreateServiceCollection();

            services.Added += delegate { EventFireCount++; };
            services.Add <string>(str);
            services.Add <object>(str);

            Assert.AreEqual(1, EventFireCount);
        }
        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 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 AddingAServiceFiresEvent()
        {
            bool   EventFired     = false;
            object ServiceInEvent = null;
            object obj            = new object();
            TestableServiceCollection services = CreateServiceCollection();

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

            Assert.IsTrue(EventFired);
            Assert.AreSame(obj, ServiceInEvent);
        }
Esempio n. 15
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);
        }
        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);
        }
        public void CanAddDemandAddServiceAndItWontBeCreatedUntilAskedFor()
        {
            TestableServiceCollection services = CreateServiceCollection();

            MockDemandService.WasCreated = false;

            services.AddOnDemand(typeof(MockDemandService));
            Assert.IsFalse(MockDemandService.WasCreated);
            Assert.IsTrue(services.Contains <MockDemandService>());
            Assert.IsFalse(MockDemandService.WasCreated);

            MockDemandService svc = services.Get <MockDemandService>();

            Assert.IsTrue(MockDemandService.WasCreated);
        }
        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 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 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);
        }
        public void EnumeratorIgnoresItemsAddedDirectlyToLocator()
        {
            TestableServiceCollection collection = CreateServiceCollection();
            object obj1 = new object();
            string obj2 = "Hello world";
            object obj3 = new object();

            collection.Add(obj1);
            collection.Add(obj2);
            collection.Locator.Add(typeof(object), obj3);

            bool o3Found = false;

            foreach (KeyValuePair <Type, object> pair in collection)
            {
                if (pair.Value == obj3)
                {
                    o3Found = true;
                }
            }

            Assert.IsFalse(o3Found);
        }
Esempio n. 23
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 AddingNullServiceTypeThrows()
        {
            TestableServiceCollection services = CreateServiceCollection();

            services.Add(null, new object());
        }
        public void CanCreateServiceInChildWhenServiceExistsInParent_Generic()
        {
            TestableServiceCollection services = CreateServiceCollection();
            TestableServiceCollection childServices = new TestableServiceCollection(services);

            MockDataObject parentService = services.AddNew<MockDataObject>();
            MockDataObject childService = childServices.AddNew<MockDataObject>();

            Assert.AreSame(parentService, services.Get<MockDataObject>());
            Assert.AreSame(childService, childServices.Get<MockDataObject>());
        }
        public void CanCreateServiceInChildWhenServiceExistsInParent()
        {
            TestableServiceCollection services = CreateServiceCollection();
            TestableServiceCollection childServices = new TestableServiceCollection(services);

            object parentService = services.AddNew(typeof (MockDataObject));
            object childService = childServices.AddNew(typeof (MockDataObject));

            Assert.AreSame(parentService, services.Get(typeof (MockDataObject)));
            Assert.AreSame(childService, childServices.Get(typeof (MockDataObject)));
        }
        public void AddingNullServiceThrows()
        {
            TestableServiceCollection services = CreateServiceCollection();

            services.Add(typeof(object), null);
        }
        public void DemandAddedServiceFromParentGetsReplacedInParentEvenWhenAskedForFromChild_Generic()
        {
            TestableServiceCollection parent = CreateServiceCollection();
            TestableServiceCollection child = new TestableServiceCollection(parent);

            parent.AddOnDemand<MockDemandService>();
            MockDemandService svc = child.Get<MockDemandService>();

            Assert.AreSame(svc, parent.Locator.Get(new DependencyResolutionLocatorKey(typeof (MockDemandService), null)));
        }
            private TestableServiceCollection(ILifetimeContainer container, IReadWriteLocator locator,
			                                  IBuilder<WCSFBuilderStage> builder, TestableServiceCollection parent)
                : base(container, locator, builder, parent)
            {
                this.builder = builder;
                this.container = container;
                this.locator = locator;
            }
 public TestableServiceCollection(TestableServiceCollection parent)
     : this(parent.container, new Locator(parent.locator), parent.builder, parent)
 {
     locator.Add(typeof (ILifetimeContainer), parent.locator.Get<ILifetimeContainer>());
 }
        public void GetServiceCanReturnNullWhenServiceDoesntExist_Generic()
        {
            TestableServiceCollection services = CreateServiceCollection();

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

            services.Get <MockDataObject>(true);
        }
        public void GetServiceCanReturnNullWhenServiceDoesntExist()
        {
            TestableServiceCollection services = CreateServiceCollection();

            Assert.IsNull(services.Get(typeof(MockDataObject)));
        }
        public void AddingNullServiceThrows_Generic()
        {
            TestableServiceCollection services = CreateServiceCollection();

            services.Add <object>(null);
        }
        public void GetServiceCanThrowOnMissingService()
        {
            TestableServiceCollection services = CreateServiceCollection();

            services.Get(typeof(MockDataObject), true);
        }