Пример #1
0
        public void Test_CanLoad_AndResolve_BindToType(int nTestThreads)
        {
            StandardDependencyResolver resolver =
                new StandardDependencyResolver();

            List <DependencyRegistration> dependencies =
                new List <DependencyRegistration>();

            dependencies.Add(DependencyRegistration.BindToType(typeof(IAsSingletonSampleDependency),
                                                               typeof(AsSingletonSampleDependencyImpl),
                                                               DependencyScope.Singleton));

            dependencies.Add(DependencyRegistration.BindToType(typeof(IAsThreadSingletonSampleDependency),
                                                               typeof(AsThreadSingletonSampleDependencyImpl),
                                                               DependencyScope.Thread));

            dependencies.Add(DependencyRegistration.BindToType(typeof(IAsTransientSampleDependency),
                                                               typeof(AsTransientSampleDependencyImpl),
                                                               DependencyScope.Transient));

            resolver.Load(dependencies);

            Assert_DependenciesCanBeResolved(resolver);
            Assert_DependenciesCorrectlyResolved(nTestThreads, resolver);
        }
Пример #2
0
        private IDependencyResolver GetDependencyResolver()
        {
            IDependencyResolver dependencyResolver =
                new StandardDependencyResolver();

            dependencyResolver.Load(TestDependencyRegistrations
                                    .GetAll());

            return(dependencyResolver);
        }
Пример #3
0
        private static void Assert_DependenciesCorrectlyResolved(int nTestThreads, StandardDependencyResolver resolver)
        {
            //Check that singletons are resolved as such
            Assert.AreSame(resolver.TryResolve <IAsSingletonSampleDependency>(),
                           resolver.TryResolve <IAsSingletonSampleDependency>());

            //Check that thread singletons are resolved as such
            List <Task> threads =
                new List <Task>();

            ConcurrentDictionary <int, IAsThreadSingletonSampleDependency> threadInstances =
                new ConcurrentDictionary <int, IAsThreadSingletonSampleDependency>();

            for (int i = 0; i < nTestThreads; i++)
            {
                threads.Add(Task.Run(() =>
                {
                    IAsThreadSingletonSampleDependency dep = resolver
                                                             .TryResolve <IAsThreadSingletonSampleDependency>();

                    Assert.AreSame(dep, resolver
                                   .TryResolve <IAsThreadSingletonSampleDependency>());

                    threadInstances.AddOrUpdate(Thread.CurrentThread.ManagedThreadId,
                                                (key) => dep,
                                                (key, oldDep) => dep);
                }));
            }

            Task.WaitAll(threads.ToArray());

            IAsThreadSingletonSampleDependency[] checkThreadInstances = threadInstances
                                                                        .Values
                                                                        .ToArray();

            for (int i = 1; i < checkThreadInstances.Length; i++)
            {
                Assert.AreNotSame(checkThreadInstances[i - 1],
                                  checkThreadInstances[i]);
            }

            //Check that transients are resolved as such
            Assert.AreNotSame(resolver.TryResolve <IAsTransientSampleDependency>(),
                              resolver.TryResolve <IAsTransientSampleDependency>());
        }
Пример #4
0
        public void Test_CanLoad_AndResolve_BindToInstance()
        {
            StandardDependencyResolver resolver =
                new StandardDependencyResolver();

            List <DependencyRegistration> dependencies =
                new List <DependencyRegistration>();

            IAsSingletonSampleDependency instance = new AsSingletonSampleDependencyImpl();

            dependencies.Add(DependencyRegistration.BindToInstance(typeof(IAsSingletonSampleDependency),
                                                                   instance));

            resolver.Load(dependencies);

            Assert.IsTrue(resolver.CanResolve(typeof(IAsSingletonSampleDependency)));
            Assert.IsTrue(resolver.CanResolve <IAsSingletonSampleDependency>());

            Assert.AreSame(instance,
                           resolver.TryResolve <IAsSingletonSampleDependency>());

            Assert.AreSame(resolver.TryResolve <IAsSingletonSampleDependency>(),
                           resolver.TryResolve <IAsSingletonSampleDependency>());
        }
Пример #5
0
        private static void Assert_DependenciesCanBeResolved(StandardDependencyResolver resolver)
        {
            Assert.IsTrue(resolver.CanResolve(typeof(IAsSingletonSampleDependency)));
            Assert.IsTrue(resolver.CanResolve(typeof(IAsThreadSingletonSampleDependency)));
            Assert.IsTrue(resolver.CanResolve(typeof(IAsTransientSampleDependency)));
            Assert.IsFalse(resolver.CanResolve(typeof(IDependencyNotRegisteredWithResolver)));

            Assert.IsTrue(resolver.CanResolve <IAsSingletonSampleDependency>());
            Assert.IsTrue(resolver.CanResolve <IAsThreadSingletonSampleDependency>());
            Assert.IsTrue(resolver.CanResolve <IAsTransientSampleDependency>());
            Assert.IsFalse(resolver.CanResolve <IDependencyNotRegisteredWithResolver>());

            Assert.IsInstanceOf <AsSingletonSampleDependencyImpl>(resolver.TryResolve(typeof(IAsSingletonSampleDependency)));
            Assert.IsInstanceOf <AsSingletonSampleDependencyImpl>(resolver.TryResolve <IAsSingletonSampleDependency>());

            Assert.IsInstanceOf <AsThreadSingletonSampleDependencyImpl>(resolver.TryResolve(typeof(IAsThreadSingletonSampleDependency)));
            Assert.IsInstanceOf <AsThreadSingletonSampleDependencyImpl>(resolver.TryResolve <IAsThreadSingletonSampleDependency>());

            Assert.IsInstanceOf <AsTransientSampleDependencyImpl>(resolver.TryResolve(typeof(IAsTransientSampleDependency)));
            Assert.IsInstanceOf <AsTransientSampleDependencyImpl>(resolver.TryResolve <IAsTransientSampleDependency>());

            Assert.IsNull(resolver.TryResolve(typeof(IDependencyNotRegisteredWithResolver)));
            Assert.IsNull(resolver.TryResolve <IDependencyNotRegisteredWithResolver>());
        }