public void DeepCloneReturnsDifferentCreatedService() { var factory = new SingletonServiceFactory <IService> { Creator = () => new Service() }; var clone = factory.Clone(false); Assert.That(factory.Service, Is.Not.SameAs(clone.Service)); Assert.That(clone.OwnsService, Is.True); // deep clone owns its service }
public void ShallowCloneReturnsSameCreatedService() { var factory = new SingletonServiceFactory <IService> { Creator = () => new Service() }; var clone = factory.Clone(); Assert.That(factory.Service, Is.SameAs(clone.Service)); Assert.That(clone.OwnsService, Is.False); // but does not own it }
public void ShallowCloneSingleton() { var f1 = new SingletonServiceFactory <IThing> { Creator = () => new Thing() }; var f2 = f1.Clone(); var s = f2.Service; Assert.That(s, Is.Not.Null); Assert.That(s, Is.InstanceOf <Thing>()); Assert.That(f2.Service, Is.SameAs(s)); Assert.That(f1.Service, Is.SameAs(s)); }
public void DeepCloneReturnsSameProvidedSingletonService() { var services = new ServiceCollection(); services.AddSingleton <IService, Service>(); var serviceProvider = services.BuildServiceProvider(); var factory = new SingletonServiceFactory <IService> { ServiceProvider = serviceProvider }; var clone = factory.Clone(false); Assert.That(factory.Service, Is.SameAs(clone.Service)); Assert.That(clone.OwnsService, Is.False); // still does not own it }
public void DeepCloneSingleton() { var f1 = new SingletonServiceFactory <IThing> { Creator = () => new Thing() }; var f2 = f1.Clone(false); var s2 = f2.Service; Assert.That(s2, Is.Not.Null); Assert.That(s2, Is.InstanceOf <Thing>()); Assert.That(f2.Service, Is.SameAs(s2)); var s1 = f1.Service; Assert.That(s1, Is.Not.Null); Assert.That(s1, Is.InstanceOf <Thing>()); Assert.That(f1.Service, Is.SameAs(s1)); Assert.That(s1, Is.Not.SameAs(s2)); }