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