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); }
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); }
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); }
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); }