示例#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>();
        }