Exemplo n.º 1
0
        public void RegisterSingletonConcreteTypeCreatesSingleton()
        {
            var container = new ContainerExtension();

            container.RegisterSingleton <ServiceMock>();
            var resolved1 = container.Resolve <ServiceMock>();
            var resolved2 = container.Resolve <ServiceMock>();

            Assert.NotNull(resolved1);
            Assert.Same(resolved1, resolved2);
        }
Exemplo n.º 2
0
        public void RegisterSingletonWithFactoryAndContainerProvider()
        {
            var container = new ContainerExtension();

            container.Register <IServiceMock, ServiceMock>(nameof(ServiceMock));
            container.RegisterSingleton <IServiceMock>(CreateServiceWithContainerProvider);
            var resolved = container.Resolve <IServiceMock>();

            Assert.NotNull(resolved);
            Assert.IsType <ServiceMock>(resolved);
            var serviceMock = resolved as ServiceMock;
            var resolved2   = container.Resolve <IServiceMock>();

            Assert.Same(resolved, resolved2);
        }
Exemplo n.º 3
0
        public void RegisterSingletonSupportsFuncInjection()
        {
            var container = new ContainerExtension();

            container.RegisterSingleton <IServiceMock, ServiceMock>();
            var func = container.Resolve <Func <IServiceMock> >();

            Assert.NotNull(func);
            var instance = func();

            Assert.IsType <ServiceMock>(instance);

            var func2 = container.Resolve <Func <IServiceMock> >();

            Assert.Same(instance, func2());
        }
Exemplo n.º 4
0
        public void RegisterSingletonWithFactory()
        {
            var container = new ContainerExtension();

            container.RegisterSingleton <IServiceMock>(CreateService);
            var resolved = container.Resolve <IServiceMock>();

            Assert.NotNull(resolved);
            Assert.IsType <ServiceMock>(resolved);
            var serviceMock = resolved as ServiceMock;

            Assert.Equal("Created through a factory", serviceMock.SomeProperty);
            var resolved2 = container.Resolve <IServiceMock>();

            Assert.Same(resolved, resolved2);
        }
Exemplo n.º 5
0
        public void RegisterSingletonNamedServiceMappingCreatesSingleton()
        {
            var container = new ContainerExtension();

            container.RegisterSingleton <IServiceMock, ServiceMock>("Test");
            var resolved1 = container.Resolve <IServiceMock>("Test");
            var resolved2 = container.Resolve <IServiceMock>("Test");
            var ex        = Record.Exception(() => container.Resolve <IServiceMock>());

            Assert.NotNull(ex);
            Assert.NotNull(resolved1);
            Assert.NotNull(resolved2);
            Assert.IsType <ServiceMock>(resolved1);
            Assert.IsType <ServiceMock>(resolved2);
            Assert.Same(resolved1, resolved2);
        }
Exemplo n.º 6
0
        public void RegisterSingletonSupportsLazyInjection()
        {
            var container = new ContainerExtension();

            container.RegisterSingleton <IServiceMock, ServiceMock>();
            var lazy = container.Resolve <Lazy <IServiceMock> >();

            Assert.NotNull(lazy);
            Assert.False(lazy.IsValueCreated);
            var instance = lazy.Value;

            Assert.IsType <ServiceMock>(instance);

            var lazy2 = container.Resolve <Lazy <IServiceMock> >();

            Assert.Same(instance, lazy2.Value);
        }