public void GracefulRecursionHandling(IFrameworkAdapter framework) { this.AssertIsNotCrashingOnRecursion(framework); framework.Register <ServiceWithRecursiveDependency1>(); framework.Register <ServiceWithRecursiveDependency2>(); this.AssertGivesCorrectExceptionWhenResolvingRecursive <ServiceWithRecursiveDependency1>(framework); }
public void GracefulRecursionHandlingForListDependency(IFrameworkAdapter framework) { this.AssertIsNotCrashingOnListRecursion(framework); framework.Register <ServiceWithListConstructorDependency <IService[]> >(); framework.Register <IService, ServiceThatCreatesRecursiveArrayDependency>(); this.AssertGivesCorrectExceptionWhenResolvingRecursive <ServiceWithListConstructorDependency <IService[]> >(framework); }
public void ConstructorDependency(IFrameworkAdapter framework) { framework.Register <IService, IndependentService>(); framework.Register <ServiceWithSimpleConstructorDependency>(); var component = framework.Resolve <ServiceWithSimpleConstructorDependency>(); Assert.NotNull(component.Service); Assert.IsAssignableFrom <IndependentService>(component.Service); }
public void RegistrationAtAnyStage(IFrameworkAdapter framework) { framework.Register <IService, IndependentService>(); framework.Resolve <IService>(); framework.Register <IService2, IndependentService2>(); var resolved = framework.Resolve <IService2>(); Assert.NotNull(resolved); }
public void ConstructorDependencyUsingInstance(IFrameworkAdapter framework) { var instance = new IndependentService(); framework.Register <IService>(instance); framework.Register <ServiceWithSimpleConstructorDependency>(); var dependent = framework.Resolve <ServiceWithSimpleConstructorDependency>(); Assert.Same(instance, dependent.Service); }
public void FactoryWithNoParameters(IFrameworkAdapter framework) { framework.Register <IService, IndependentService>(); framework.Register <ServiceWithSimpleConstructorDependency>(); var func = framework.Resolve <Func <ServiceWithSimpleConstructorDependency> >(); Assert.NotNull(func); var result = func(); Assert.NotNull(result); }
public void ReasonableConstructorSelection(IFrameworkAdapter framework) { framework.Register <IService, IndependentService>(); framework.Register <ServiceWithMultipleConstructors>(); var resolved = framework.Resolve <ServiceWithMultipleConstructors>(); Assert.NotNull(resolved); Assert.Equal( ServiceWithMultipleConstructors.ConstructorNames.MostResolvable, resolved.UsedConstructorName ); }
public void AssertResolvesListDependencyFor <TTestComponent>(IFrameworkAdapter framework) where TTestComponent : IServiceWithListDependency <IEnumerable <IService> > { framework.Register <IService, IndependentService>(); framework.Register <TTestComponent>(); var resolved = framework.Resolve <TTestComponent>(); Assert.NotNull(resolved); Assert.NotNull(resolved.Services); Assert.Equal(1, resolved.Services.Count()); Assert.IsAssignableFrom <IndependentService>(resolved.Services.First()); }
public void FactoryWithParameter(IFrameworkAdapter framework) { framework.Register <IService, IndependentService>(); framework.Register <ServiceWithTwoConstructorDependencies>(); var service2 = new IndependentService2(); var func = framework.Resolve <Func <IService2, ServiceWithTwoConstructorDependencies> >(); Assert.NotNull(func); var result = func(service2); Assert.NotNull(result); Assert.Same(service2, result.Service2); }
public void IndependentServiceRegisteredAsSelf(IFrameworkAdapter framework) { framework.Register <IndependentService>(); var component = framework.Resolve <IndependentService>(); Assert.NotNull(component); }
public void PropertyDependencyIsOptional(IFrameworkAdapter framework) { framework.Register <ServiceWithSimplePropertyDependency>(); var component = framework.Resolve <ServiceWithSimplePropertyDependency>(); Assert.Null(component.Service); }
public void PrebuiltInstance(IFrameworkAdapter framework) { var instance = new IndependentService(); framework.Register <IService>(instance); var resolved = framework.Resolve <IService>(); Assert.Same(instance, resolved); }
public static void Register <TService>(this IFrameworkAdapter container) { container.Register <TService, TService>(); }