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
        }
Ejemplo n.º 3
0
        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
        }
Ejemplo n.º 5
0
        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));
        }