예제 #1
0
        public void ManyResolverCannotRemoveTypeOnceFrozen()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>(), new Type[] { typeof(Resolved1), typeof(Resolved2) });

            Resolution.Freeze();
            resolver.RemoveType <Resolved2>(); // throws
        }
예제 #2
0
        public void ManyResolverCannotAddInvalidType()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>());

            //resolver.AddType<Resolved4>(); // does not compile
            resolver.AddType(typeof(Resolved4)); // throws
        }
예제 #3
0
        public void ManyResolverCannotRemoveInvalidType()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) });

            //resolver.RemoveType<Resolved4>(); // does not compile
            resolver.RemoveType(typeof(Resolved4)); // throws
        }
예제 #4
0
        public void ManyResolverCannotAddTypeOnceFrozen()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>());

            Resolution.Freeze();
            resolver.AddType <Resolved1>();
        }
예제 #5
0
        public void ManyResolverCannotInsertBeforeTypeOnceFrozen()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>(), new Type[] { typeof(Resolved1), typeof(Resolved2) });

            Resolution.Freeze();
            resolver.InsertTypeBefore <Resolved2, Resolved3>();
        }
예제 #6
0
        public void ManyResolverCannotInsertBeforeTypeOnceFrozen()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) });

            Resolution.Freeze();
            resolver.InsertTypeBefore <Resolved2, Resolved3>();
        }
예제 #7
0
        public void ManyResolverCannotAddTypeAgain()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>());

            resolver.AddType <Resolved1>();
            resolver.AddType <Resolved1>();
        }
예제 #8
0
        public void ManyResolverCannotRemoveTypeOnceFrozen()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) });

            Resolution.Freeze();
            resolver.RemoveType <Resolved2>(); // throws
        }
예제 #9
0
        public void ManyResolverCannotAddTypeAgain()
        {
            var resolver = new ManyResolver();

            resolver.AddType <Resolved1>();
            resolver.AddType <Resolved1>();
        }
예제 #10
0
        public void ManyResolverCannotAddInvalidType()
        {
            var resolver = new ManyResolver();

            //resolver.AddType<Resolved4>(); // does not compile
            resolver.AddType(typeof(Resolved4)); // throws
        }
예제 #11
0
        public void ManyResolverHttpRequestLifetimeScope()
        {
            var httpContextFactory = new FakeHttpContextFactory("~/Home");
            var httpContext        = httpContextFactory.HttpContext;
            var resolver           = new ManyResolver(httpContext);

            resolver.AddType <Resolved1>();
            resolver.AddType <Resolved2>();
            Resolution.Freeze();

            var values = resolver.ResolvedObjects;

            Assert.AreEqual(2, values.Count());
            Assert.IsInstanceOf <Resolved1>(values.ElementAt(0));
            Assert.IsInstanceOf <Resolved2>(values.ElementAt(1));

            var values2 = resolver.ResolvedObjects;

            Assert.AreEqual(2, values2.Count());
            Assert.AreSame(values.ElementAt(0), values2.ElementAt(0));
            Assert.AreSame(values.ElementAt(1), values2.ElementAt(1));

            httpContextFactory.HttpContext.Items.Clear(); // new context

            var values3 = resolver.ResolvedObjects;

            Assert.AreEqual(2, values3.Count());
            Assert.AreNotSame(values.ElementAt(0), values3.ElementAt(0));
            Assert.AreNotSame(values.ElementAt(1), values3.ElementAt(1));
        }
예제 #12
0
        public void ManyResolverCannotAddTypeOnceFrozen()
        {
            var resolver = new ManyResolver();

            Resolution.Freeze();
            resolver.AddType <Resolved1>();
        }
예제 #13
0
        public void ManyResolverCannotGetValuesBeforeFreezeUnless()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) });

            resolver.CanResolveBeforeFrozen = true;
            var values = resolver.ResolvedObjects;
        }
예제 #14
0
        public void ManyResolverCannotGetValuesBeforeFreezeUnless()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>(), new Type[] { typeof(Resolved1), typeof(Resolved2) });

            resolver.CanResolveBeforeFrozen = true;
            var values = resolver.ResolvedObjects;
        }
예제 #15
0
        public void ManyResolverCannotInsertBeforeInvalidType()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>(), new Type[] { typeof(Resolved1), typeof(Resolved2) });

            //resolver.InsertTypeBefore<Resolved2, Resolved4>(); // does not compile
            resolver.InsertTypeBefore(typeof(Resolved2), typeof(Resolved4)); // throws
        }
예제 #16
0
        public void ManyResolverCannotInsertBeforeInvalidType()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) });

            //resolver.InsertTypeBefore<Resolved2, Resolved4>(); // does not compile
            resolver.InsertTypeBefore(typeof(Resolved2), typeof(Resolved4)); // throws
        }
예제 #17
0
        public void ManyResolverContainsTypes()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) });

            Assert.IsTrue(resolver.ContainsType <Resolved1>());
            Assert.IsTrue(resolver.ContainsType <Resolved2>());
            Assert.IsFalse(resolver.ContainsType <Resolved3>());
            //Assert.IsFalse(resolver.ContainsType<Resolved4>()); // does not compile
        }
예제 #18
0
        public void ManyResolverCanClearBeforeFreeze()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>());

            resolver.AddType <Resolved1>();
            resolver.AddType <Resolved2>();
            resolver.Clear();
            Assert.IsFalse(resolver.ContainsType <Resolved1>());
            Assert.IsFalse(resolver.ContainsType <Resolved2>());
        }
예제 #19
0
        public void ManyResolverCanInsertBeforeTypeBeforeFreeze()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) });

            resolver.InsertTypeBefore <Resolved2, Resolved3>();

            Assert.IsTrue(resolver.ContainsType <Resolved1>());
            Assert.IsTrue(resolver.ContainsType <Resolved2>());
            Assert.IsTrue(resolver.ContainsType <Resolved3>());
        }
예제 #20
0
        public void ManyResolverCanClearBeforeFreeze()
        {
            var resolver = new ManyResolver();

            resolver.AddType <Resolved1>();
            resolver.AddType <Resolved2>();
            resolver.Clear();
            Assert.IsFalse(resolver.ContainsType <Resolved1>());
            Assert.IsFalse(resolver.ContainsType <Resolved2>());
        }
예제 #21
0
        public void ManyResolverCanInsertBeforeTypeBeforeFreeze()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>(), new Type[] { typeof(Resolved1), typeof(Resolved2) });

            resolver.InsertTypeBefore <Resolved2, Resolved3>();

            Assert.IsTrue(resolver.ContainsType <Resolved1>());
            Assert.IsTrue(resolver.ContainsType <Resolved2>());
            Assert.IsTrue(resolver.ContainsType <Resolved3>());
        }
예제 #22
0
        public void ManyResolverCanGetValuesOnceFrozen()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) });

            Resolution.Freeze();
            var values = resolver.ResolvedObjects;

            Assert.AreEqual(2, values.Count());
            Assert.IsInstanceOf <Resolved1>(values.ElementAt(0));
            Assert.IsInstanceOf <Resolved2>(values.ElementAt(1));
        }
예제 #23
0
        public void ManyResolverContainsTypes()
        {
            var resolver = new ManyResolver(
                new ActivatorServiceProvider(), Mock.Of <ILogger>(),
                new Type[] { typeof(Resolved1), typeof(Resolved2) });

            Assert.IsTrue(resolver.ContainsType <Resolved1>());
            Assert.IsTrue(resolver.ContainsType <Resolved2>());
            Assert.IsFalse(resolver.ContainsType <Resolved3>());
            //Assert.IsFalse(resolver.ContainsType<Resolved4>()); // does not compile
        }
예제 #24
0
        public void ManyResolverWeightedResolution()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>(), new Type[] { typeof(Resolved1), typeof(Resolved2) });

            Resolution.Freeze();

            var values = resolver.SortedResolvedObjects;

            Assert.AreEqual(2, values.Count());
            Assert.IsInstanceOf <Resolved2>(values.ElementAt(0));
            Assert.IsInstanceOf <Resolved1>(values.ElementAt(1));
        }
예제 #25
0
        public void ManyResolverDefaultOrderOfTypes()
        {
            var resolver = new ManyResolver();

            resolver.AddType <Resolved3>();
            resolver.InsertType <Resolved1>(0);
            resolver.InsertTypeBefore <Resolved3, Resolved2>();
            Resolution.Freeze();
            var values = resolver.ResolvedObjects;

            Assert.AreEqual(3, values.Count());
            Assert.IsInstanceOf <Resolved1>(values.ElementAt(0));
            Assert.IsInstanceOf <Resolved2>(values.ElementAt(1));
            Assert.IsInstanceOf <Resolved3>(values.ElementAt(2));
        }
예제 #26
0
        public void ManyResolverDefaultLifetimeScopeIsApplication()
        {
            var resolver = new ManyResolver(new ActivatorServiceProvider(), Mock.Of <ILogger>(), new Type[] { typeof(Resolved1), typeof(Resolved2) });

            Resolution.Freeze();
            var values = resolver.ResolvedObjects;

            Assert.AreEqual(2, values.Count());
            Assert.IsInstanceOf <Resolved1>(values.ElementAt(0));
            Assert.IsInstanceOf <Resolved2>(values.ElementAt(1));

            var values2 = resolver.ResolvedObjects;

            Assert.AreEqual(2, values2.Count());
            Assert.AreSame(values.ElementAt(0), values2.ElementAt(0));
            Assert.AreSame(values.ElementAt(1), values2.ElementAt(1));
        }
예제 #27
0
        public void ManyResolverTransientLifetimeScope()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) }, ObjectLifetimeScope.Transient);

            Resolution.Freeze();
            var values = resolver.ResolvedObjects;

            Assert.AreEqual(2, values.Count());
            Assert.IsInstanceOf <Resolved1>(values.ElementAt(0));
            Assert.IsInstanceOf <Resolved2>(values.ElementAt(1));

            var values2 = resolver.ResolvedObjects;

            Assert.AreEqual(2, values2.Count());
            Assert.AreNotSame(values.ElementAt(0), values2.ElementAt(0));
            Assert.AreNotSame(values.ElementAt(1), values2.ElementAt(1));
        }
예제 #28
0
 public void ManyResolverCannotGetValuesBeforeFreeze()
 {
     var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) });
     var values   = resolver.ResolvedObjects;
 }
예제 #29
0
        public void ManyResolverCannotInsertBeforeTypeAgain()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1), typeof(Resolved2) });

            resolver.InsertTypeBefore <Resolved2, Resolved1>();
        }
예제 #30
0
        public void ManyResolverCannotInsertBeforeAbsentType()
        {
            var resolver = new ManyResolver(new Type[] { typeof(Resolved1) });

            resolver.InsertTypeBefore <Resolved2, Resolved3>();
        }