コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: ResolverTests.cs プロジェクト: vnvizitiu/stashbox
        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);
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: ResolverTests.cs プロジェクト: vnvizitiu/stashbox
        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);
            }
        }
コード例 #6
0
        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()));
        }
コード例 #7
0
        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);
        }