Exemplo n.º 1
0
        public void SingletonLifetime(IFrameworkAdapter framework)
        {
            framework.RegisterSingleton <IService, IndependentService>();
            var instance1 = framework.Resolve <IService>();
            var instance2 = framework.Resolve <IService>();

            Assert.Same(instance1, instance2);
        }
Exemplo n.º 2
0
        public void TransientLifetime(IFrameworkAdapter framework)
        {
            framework.RegisterTransient <IService, IndependentService>();
            var instance1 = framework.Resolve <IService>();
            var instance2 = framework.Resolve <IService>();

            Assert.NotSame(instance1, instance2);
        }
Exemplo n.º 3
0
        public void RegistrationAtAnyStage(IFrameworkAdapter framework)
        {
            framework.Register <IService, IndependentService>();
            framework.Resolve <IService>();
            framework.Register <IService2, IndependentService2>();

            var resolved = framework.Resolve <IService2>();

            Assert.NotNull(resolved);
        }
Exemplo n.º 4
0
        public void OpenGenericTypes(IFrameworkAdapter framework)
        {
            framework.RegisterTransient(typeof(IGenericService <>), typeof(GenericService <>));
            var resolved = framework.Resolve <IGenericService <int> >();

            Assert.NotNull(resolved);
        }
Exemplo n.º 5
0
        public void IndependentServiceRegisteredAsSelf(IFrameworkAdapter framework)
        {
            framework.Register <IndependentService>();
            var component = framework.Resolve <IndependentService>();

            Assert.NotNull(component);
        }
Exemplo n.º 6
0
        public void PropertyDependencyIsOptional(IFrameworkAdapter framework)
        {
            framework.Register <ServiceWithSimplePropertyDependency>();
            var component = framework.Resolve <ServiceWithSimplePropertyDependency>();

            Assert.Null(component.Service);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        public void PrebuiltInstance(IFrameworkAdapter framework)
        {
            var instance = new IndependentService();

            framework.Register <IService>(instance);

            var resolved = framework.Resolve <IService>();

            Assert.Same(instance, resolved);
        }
Exemplo n.º 9
0
        public void TransientFactoryUsedBySingletonStillCreatesTransient(IFrameworkAdapter framework)
        {
            framework.RegisterTransient <IService, IndependentService>();
            framework.RegisterSingleton <ServiceWithFuncConstructorDependency>();

            var service = framework.Resolve <ServiceWithFuncConstructorDependency>();
            var first   = service.Factory();
            var second  = service.Factory();

            Assert.NotSame(first, second);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        private void AssertGivesCorrectExceptionWhenResolvingRecursive <TService>(IFrameworkAdapter framework)
        {
            try {
                framework.Resolve <TService>();
            }
            catch (Exception ex) {
                Debug.WriteLine(framework.GetType().Name + " throws following on recursion: " + ex);
                return;
            }

            throw new AssertException("No exception for recursion, either this use case is not supported or there is some other issue.");
        }
Exemplo n.º 13
0
        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
                );
        }
Exemplo n.º 14
0
        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());
        }
Exemplo n.º 15
0
        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 static TService Resolve <TService>(this IFrameworkAdapter container)
 {
     return((TService)container.Resolve(typeof(TService)));
 }