public void Ensure_Unknown_Type_Configurations_Working() { using var container = new StashboxContainer(c => c.WithUnknownTypeResolution()); Assert.True(container.ContainerContext.ContainerConfiguration.UnknownTypeResolutionEnabled); Assert.Null(container.ContainerContext.ContainerConfiguration.UnknownTypeConfigurator); container.Configure(c => c.WithUnknownTypeResolution(co => { })); Assert.True(container.ContainerContext.ContainerConfiguration.UnknownTypeResolutionEnabled); Assert.NotNull(container.ContainerContext.ContainerConfiguration.UnknownTypeConfigurator); container.Configure(c => c.WithUnknownTypeResolution(enabled: false)); Assert.False(container.ContainerContext.ContainerConfiguration.UnknownTypeResolutionEnabled); }
public void ContainerTests_ConfigurationChanged() { ContainerConfiguration newConfig = null; var container = new StashboxContainer(config => config.OnContainerConfigurationChanged(nc => newConfig = nc)); container.Configure(config => config.WithUnknownTypeResolution()); Assert.True(newConfig.UnknownTypeResolutionEnabled); }
public void ResolverTests_MemberInject_WithoutAnnotation_LateConfig() { using (var container = new StashboxContainer()) { container.Register <Test5>(); container.Configure(config => config.WithUnknownTypeResolution().WithMemberInjectionWithoutAnnotation()); var inst = container.Resolve <Test5>(); Assert.IsNotNull(inst.I); } }
public void Ensure_Auto_Member_Injection_Configurations_Working() { using var container = new StashboxContainer(c => c.WithAutoMemberInjection()); Assert.True(container.ContainerContext.ContainerConfiguration.AutoMemberInjectionEnabled); Assert.Equal(Rules.AutoMemberInjectionRules.PropertiesWithPublicSetter, container.ContainerContext.ContainerConfiguration.AutoMemberInjectionRule); Assert.Null(container.ContainerContext.ContainerConfiguration.AutoMemberInjectionFilter); container.Configure(c => c.WithAutoMemberInjection(Rules.AutoMemberInjectionRules.PrivateFields)); Assert.True(container.ContainerContext.ContainerConfiguration.AutoMemberInjectionEnabled); Assert.Equal(Rules.AutoMemberInjectionRules.PrivateFields, container.ContainerContext.ContainerConfiguration.AutoMemberInjectionRule); Assert.Null(container.ContainerContext.ContainerConfiguration.AutoMemberInjectionFilter); container.Configure(c => c.WithAutoMemberInjection(filter: m => true)); Assert.True(container.ContainerContext.ContainerConfiguration.AutoMemberInjectionEnabled); Assert.Equal(Rules.AutoMemberInjectionRules.PropertiesWithPublicSetter, container.ContainerContext.ContainerConfiguration.AutoMemberInjectionRule); Assert.NotNull(container.ContainerContext.ContainerConfiguration.AutoMemberInjectionFilter); container.Configure(c => c.WithAutoMemberInjection(enabled: false)); Assert.False(container.ContainerContext.ContainerConfiguration.AutoMemberInjectionEnabled); }
public void ResolverTests_DefaultValue_WithOptional_LateConfig() { using (var container = new StashboxContainer()) { container.Register <Test1>(); container.Configure(config => config .WithOptionalAndDefaultValueInjection()); var inst = container.Resolve <Test1>(); Assert.AreEqual(5, inst.I); } }
public void ContainerTests_Throws_Disposed_Exceptions() { var container = new StashboxContainer(); container.Dispose(); Assert.Throws <ObjectDisposedException>(() => container.Activate(this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.BeginScope()); Assert.Throws <ObjectDisposedException>(() => container.BuildUp(new object())); Assert.Throws <ObjectDisposedException>(() => container.CanResolve(this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.ComposeAssemblies(new[] { this.GetType().GetTypeInfo().Assembly })); Assert.Throws <ObjectDisposedException>(() => container.ComposeAssembly(this.GetType().GetTypeInfo().Assembly)); Assert.Throws <ObjectDisposedException>(() => container.ComposeBy(this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.Configure(c => { })); Assert.Throws <ObjectDisposedException>(() => container.CreateChildContainer()); Assert.Throws <ObjectDisposedException>(() => container.GetRegistrationMappings()); #if HAS_SERVICEPROVIDER Assert.Throws <ObjectDisposedException>(() => container.GetService(this.GetType())); #endif Assert.Throws <ObjectDisposedException>(() => container.IsRegistered(this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.PutInstanceInScope(this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.Register(this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.RegisterAssemblies(new[] { this.GetType().GetTypeInfo().Assembly })); Assert.Throws <ObjectDisposedException>(() => container.RegisterAssembly(this.GetType().GetTypeInfo().Assembly)); Assert.Throws <ObjectDisposedException>(() => container.RegisterAssemblyContaining <ITest1>()); Assert.Throws <ObjectDisposedException>(() => container.RegisterDecorator(this.GetType(), this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.RegisterFunc <ITest1>(r => new Test1())); Assert.Throws <ObjectDisposedException>(() => container.RegisterInstance(new object())); Assert.Throws <ObjectDisposedException>(() => container.RegisterInstances(new object())); Assert.Throws <ObjectDisposedException>(() => container.RegisterResolver(null)); Assert.Throws <ObjectDisposedException>(() => container.RegisterScoped <ITest1, Test1>()); Assert.Throws <ObjectDisposedException>(() => container.RegisterSingleton <ITest1, Test1>()); Assert.Throws <ObjectDisposedException>(() => container.RegisterTypes(new [] { this.GetType() })); Assert.Throws <ObjectDisposedException>(() => container.RegisterTypesAs <ITest1>(this.GetType().GetTypeInfo().Assembly)); Assert.Throws <ObjectDisposedException>(() => container.ReMap <ITest1, Test1>()); Assert.Throws <ObjectDisposedException>(() => container.ReMapDecorator(this.GetType(), this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.Resolve(this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.ResolveAll(this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.ResolveFactory(this.GetType())); Assert.Throws <ObjectDisposedException>(() => container.Validate()); Assert.Throws <ObjectDisposedException>(() => container.WireUp(new object())); }
public void Ensure_Feature_Configurations_Working() { using var container = new StashboxContainer(c => c.WithCircularDependencyWithLazy()); Assert.True(container.ContainerContext.ContainerConfiguration.CircularDependenciesWithLazyEnabled); container.Configure(c => c.WithCircularDependencyWithLazy(false)); Assert.False(container.ContainerContext.ContainerConfiguration.CircularDependenciesWithLazyEnabled); container.Configure(c => c.WithDefaultValueInjection()); Assert.True(container.ContainerContext.ContainerConfiguration.DefaultValueInjectionEnabled); container.Configure(c => c.WithDefaultValueInjection(false)); Assert.False(container.ContainerContext.ContainerConfiguration.DefaultValueInjectionEnabled); container.Configure(c => c.WithDisposableTransientTracking()); Assert.True(container.ContainerContext.ContainerConfiguration.TrackTransientsForDisposalEnabled); container.Configure(c => c.WithDisposableTransientTracking(false)); Assert.False(container.ContainerContext.ContainerConfiguration.TrackTransientsForDisposalEnabled); container.Configure(c => c.WithLifetimeValidation()); Assert.True(container.ContainerContext.ContainerConfiguration.LifetimeValidationEnabled); container.Configure(c => c.WithLifetimeValidation(false)); Assert.False(container.ContainerContext.ContainerConfiguration.LifetimeValidationEnabled); container.Configure(c => c.WithExpressionCompiler(Rules.ExpressionCompilers.MicrosoftExpressionCompiler)); Assert.NotNull(container.ContainerContext.ContainerConfiguration.ExternalExpressionCompiler); container.Configure(c => c.WithExpressionCompiler(null)); Assert.Null(container.ContainerContext.ContainerConfiguration.ExternalExpressionCompiler); container.Configure(c => c.WithNamedDependencyResolutionForUnNamedRequests()); Assert.True(container.ContainerContext.ContainerConfiguration.NamedDependencyResolutionForUnNamedRequestsEnabled); container.Configure(c => c.WithNamedDependencyResolutionForUnNamedRequests(false)); Assert.False(container.ContainerContext.ContainerConfiguration.NamedDependencyResolutionForUnNamedRequestsEnabled); container.Configure(c => c.TreatParameterAndMemberNameAsDependencyName()); Assert.True(container.ContainerContext.ContainerConfiguration.TreatingParameterAndMemberNameAsDependencyNameEnabled); container.Configure(c => c.TreatParameterAndMemberNameAsDependencyName(false)); Assert.False(container.ContainerContext.ContainerConfiguration.TreatingParameterAndMemberNameAsDependencyNameEnabled); }