public void RegisterPerThread_SameThread_Success()
        {
            ITestCase testCase = new PerThreadTestCaseD(new StructureMapRegistration(), new StructureMapResolving());
            ITestD    obj1     = null;
            ITestD    obj2     = null;


            var c = new Container();

            c = (Container)testCase.Register(c, RegistrationKind.PerThread);

            var thread = new Thread(() =>
            {
                obj1 = c.GetInstance <ITestD>();
                obj2 = c.GetInstance <ITestD>();
            });

            thread.Start();
            thread.Join();


            CheckHelper.Check(obj1, true, true);
            CheckHelper.Check(obj2, true, true);
            CheckHelper.Check(obj1, obj2, true, true);
        }
        public void RegisterPerThread_SameThread_Success()
        {
            ITestCase testCase = new PerThreadTestCaseD(new DryIocRegistration(), new DryIocResolving());

            var c = new Container(scopeContext: new ThreadScopeContext());

            c = (Container)testCase.Register(c, RegistrationKind.PerThread);
            ITestD obj1 = null;
            ITestD obj2 = null;


            var thread = new Thread(() =>
            {
                using (var s = c.OpenScope())
                {
                    obj1 = c.Resolve <ITestD>();
                    obj2 = c.Resolve <ITestD>();
                }
            });

            thread.Start();
            thread.Join();


            CheckHelper.Check(obj1, true, true);
            CheckHelper.Check(obj2, true, true);
            CheckHelper.Check(obj1, obj2, true, true);
        }
예제 #3
0
        public void RegisterPerThread_SameThread_Success()
        {
            ITestCase testCase = new PerThreadTestCaseD(new NiquIoCFullRegistration(), new NiquIoCFullResolving());

            var c = new Container();

            c = (Container)testCase.Register(c, RegistrationKind.PerThread);
            ITestD obj1 = null;
            ITestD obj2 = null;


            var thread = new Thread(() =>
            {
                obj1 = c.Resolve <ITestD>(ResolveKind.FullEmitFunction);
                obj2 = c.Resolve <ITestD>(ResolveKind.FullEmitFunction);
            });

            thread.Start();
            thread.Join();


            CheckHelper.Check(obj1, true, true);
            CheckHelper.Check(obj2, true, true);
            CheckHelper.Check(obj1, obj2, true, true);
        }
예제 #4
0
        public void RegisterPerThread_SameThread_Success()
        {
            ITestCase testCase = new PerThreadTestCaseD(new GraceRegistration(), new GraceResolving());

            var c = new DependencyInjectionContainer();

            c = (DependencyInjectionContainer)testCase.Register(c, RegistrationKind.PerThread);
            ITestD obj1 = null;
            ITestD obj2 = null;


            var thread = new Thread(() =>
            {
                using (var scope = c.BeginLifetimeScope())
                {
                    obj1 = scope.Locate <ITestD>();
                    obj2 = scope.Locate <ITestD>();
                }
            });

            thread.Start();
            thread.Join();


            CheckHelper.Check(obj1, true, true);
            CheckHelper.Check(obj2, true, true);
            CheckHelper.Check(obj1, obj2, true, true);
        }
        public void RegisterPerThread_DifferentThreads_Success()
        {
            ITestCase testCase = new PerThreadTestCaseD(new AutofacRegistration(), new AutofacResolving());

            var    cb   = new ContainerBuilder();
            var    c    = (IContainer)testCase.Register(cb, RegistrationKind.PerThread);
            ITestD obj1 = null;
            ITestD obj2 = null;


            var thread1 = new Thread(() =>
            {
                using (var threadLifetime = c.BeginLifetimeScope())
                {
                    obj1 = threadLifetime.Resolve <ITestD>();
                }
            });
            var thread2 = new Thread(() =>
            {
                using (var threadLifetime = c.BeginLifetimeScope())
                {
                    obj2 = threadLifetime.Resolve <ITestD>();
                }
            });

            thread1.Start();
            thread1.Join();
            thread2.Start();
            thread2.Join();


            CheckHelper.Check(obj1, true, true);
            CheckHelper.Check(obj2, true, true);
            CheckHelper.Check(obj1, obj2, false, false);
        }
예제 #6
0
        public void RegisterPerThread_SameThread_Success()
        {
            ITestCase testCase = new PerThreadTestCaseD(new NinjectRegistration(), new NinjectResolving());

            var c = new StandardKernel();

            c = (StandardKernel)testCase.Register(c, RegistrationKind.PerThread);
            ITestD obj1 = null;
            ITestD obj2 = null;


            var thread = new Thread(() =>
            {
                obj1 = c.Get <ITestD>();
                obj2 = c.Get <ITestD>();
            });

            thread.Start();
            thread.Join();


            CheckHelper.Check(obj1, true, true);
            CheckHelper.Check(obj2, true, true);
            CheckHelper.Check(obj1, obj2, true, true);
        }
        public void RegisterPerThread_SameThread_Success()
        {
            ITestCase testCase = new PerThreadTestCaseD(new SimpleInjectorRegistration(),
                                                        new SimpleInjectorResolving());

            var c = new Container();

            c = (Container)testCase.Register(c, RegistrationKind.PerThread);
            ITestD obj1 = null;
            ITestD obj2 = null;


            var thread = new Thread(() =>
            {
                using (c.BeginLifetimeScope())
                {
                    obj1 = c.GetInstance <ITestD>();
                    obj2 = c.GetInstance <ITestD>();
                }
            });

            thread.Start();
            thread.Join();


            CheckHelper.Check(obj1, true, true);
            CheckHelper.Check(obj2, true, true);
            CheckHelper.Check(obj1, obj2, true, true);
        }
        public void RegisterPerThread_DifferentThreads_Success()
        {
            ITestCase testCase = new PerThreadTestCaseD(new NiquIoCPartialRegistration(),
                                                        new NiquIoCPartialResolving());

            var c = new Container();

            c = (Container)testCase.Register(c, RegistrationKind.PerThread);
            ITestD obj1 = null;
            ITestD obj2 = null;


            var thread1 = new Thread(() => { obj1 = c.Resolve <ITestD>(ResolveKind.PartialEmitFunction); });
            var thread2 = new Thread(() => { obj2 = c.Resolve <ITestD>(ResolveKind.PartialEmitFunction); });

            thread1.Start();
            thread1.Join();
            thread2.Start();
            thread2.Join();


            CheckHelper.Check(obj1, true, true);
            CheckHelper.Check(obj2, true, true);
            CheckHelper.Check(obj1, obj2, false, false);
        }
        public static void Check(ITestD testD1, ITestD testD2, bool singleton, bool singletonLast)
        {
            Assert.AreEqual(testD1.Equals(testD2), singleton);

            Assert.AreEqual(testD1.TestD49.Equals(testD2.TestD49), singleton);
            Assert.AreEqual(testD1.TestD48.Equals(testD2.TestD48), singleton);
            Assert.AreEqual(testD1.TestD47.Equals(testD2.TestD47), singleton);
            Assert.AreEqual(testD1.TestD46.Equals(testD2.TestD46), singleton);
            Assert.AreEqual(testD1.TestD45.Equals(testD2.TestD45), singleton);
            Assert.AreEqual(testD1.TestD44.Equals(testD2.TestD44), singleton);
            Assert.AreEqual(testD1.TestD43.Equals(testD2.TestD43), singleton);
            Assert.AreEqual(testD1.TestD42.Equals(testD2.TestD42), singleton);
            Assert.AreEqual(testD1.TestD41.Equals(testD2.TestD41), singleton);
            Assert.AreEqual(testD1.TestD40.Equals(testD2.TestD40), singleton);

            Assert.AreEqual(testD1.TestD49.TestD39.Equals(testD2.TestD49.TestD39), singleton);
            Assert.AreEqual(testD1.TestD49.TestD38.Equals(testD2.TestD49.TestD38), singleton);
            Assert.AreEqual(testD1.TestD49.TestD37.Equals(testD2.TestD49.TestD37), singleton);
            Assert.AreEqual(testD1.TestD49.TestD36.Equals(testD2.TestD49.TestD36), singleton);
            Assert.AreEqual(testD1.TestD49.TestD35.Equals(testD2.TestD49.TestD35), singleton);
            Assert.AreEqual(testD1.TestD49.TestD34.Equals(testD2.TestD49.TestD34), singleton);
            Assert.AreEqual(testD1.TestD49.TestD33.Equals(testD2.TestD49.TestD33), singleton);
            Assert.AreEqual(testD1.TestD49.TestD32.Equals(testD2.TestD49.TestD32), singleton);
            Assert.AreEqual(testD1.TestD49.TestD31.Equals(testD2.TestD49.TestD31), singleton);
            Assert.AreEqual(testD1.TestD49.TestD30.Equals(testD2.TestD49.TestD30), singleton);

            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.Equals(testD2.TestD49.TestD39.TestD29), singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD28.Equals(testD2.TestD49.TestD39.TestD28), singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD27.Equals(testD2.TestD49.TestD39.TestD27), singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD26.Equals(testD2.TestD49.TestD39.TestD26), singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD25.Equals(testD2.TestD49.TestD39.TestD25), singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD24.Equals(testD2.TestD49.TestD39.TestD24), singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD23.Equals(testD2.TestD49.TestD39.TestD23), singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD22.Equals(testD2.TestD49.TestD39.TestD22), singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD21.Equals(testD2.TestD49.TestD39.TestD21), singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD20.Equals(testD2.TestD49.TestD39.TestD20), singleton);

            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.TestD19.Equals(testD2.TestD49.TestD39.TestD29.TestD19),
                            singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.TestD18.Equals(testD2.TestD49.TestD39.TestD29.TestD18),
                            singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.TestD17.Equals(testD2.TestD49.TestD39.TestD29.TestD17),
                            singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.TestD16.Equals(testD2.TestD49.TestD39.TestD29.TestD16),
                            singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.TestD15.Equals(testD2.TestD49.TestD39.TestD29.TestD15),
                            singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.TestD14.Equals(testD2.TestD49.TestD39.TestD29.TestD14),
                            singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.TestD13.Equals(testD2.TestD49.TestD39.TestD29.TestD13),
                            singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.TestD12.Equals(testD2.TestD49.TestD39.TestD29.TestD12),
                            singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.TestD11.Equals(testD2.TestD49.TestD39.TestD29.TestD11),
                            singleton);
            Assert.AreEqual(testD1.TestD49.TestD39.TestD29.TestD10.Equals(testD2.TestD49.TestD39.TestD29.TestD10),
                            singleton);

            Assert.AreEqual(
                testD1.TestD49.TestD39.TestD29.TestD19.TestD09.Equals(testD2.TestD49.TestD39.TestD29.TestD19.TestD09),
                singletonLast);
            Assert.AreEqual(
                testD1.TestD49.TestD39.TestD29.TestD19.TestD08.Equals(testD2.TestD49.TestD39.TestD29.TestD19.TestD08),
                singletonLast);
            Assert.AreEqual(
                testD1.TestD49.TestD39.TestD29.TestD19.TestD07.Equals(testD2.TestD49.TestD39.TestD29.TestD19.TestD07),
                singletonLast);
            Assert.AreEqual(
                testD1.TestD49.TestD39.TestD29.TestD19.TestD06.Equals(testD2.TestD49.TestD39.TestD29.TestD19.TestD06),
                singletonLast);
            Assert.AreEqual(
                testD1.TestD49.TestD39.TestD29.TestD19.TestD05.Equals(testD2.TestD49.TestD39.TestD29.TestD19.TestD05),
                singletonLast);
            Assert.AreEqual(
                testD1.TestD49.TestD39.TestD29.TestD19.TestD04.Equals(testD2.TestD49.TestD39.TestD29.TestD19.TestD04),
                singletonLast);
            Assert.AreEqual(
                testD1.TestD49.TestD39.TestD29.TestD19.TestD03.Equals(testD2.TestD49.TestD39.TestD29.TestD19.TestD03),
                singletonLast);
            Assert.AreEqual(
                testD1.TestD49.TestD39.TestD29.TestD19.TestD02.Equals(testD2.TestD49.TestD39.TestD29.TestD19.TestD02),
                singletonLast);
            Assert.AreEqual(
                testD1.TestD49.TestD39.TestD29.TestD19.TestD01.Equals(testD2.TestD49.TestD39.TestD29.TestD19.TestD01),
                singletonLast);
            Assert.AreEqual(
                testD1.TestD49.TestD39.TestD29.TestD19.TestD00.Equals(testD2.TestD49.TestD39.TestD29.TestD19.TestD00),
                singletonLast);
        }
        public static void Check(ITestD testD, bool singleton, bool singletonLast)
        {
            Assert.IsNotNull(testD);

            Assert.IsNotNull(testD.TestD49);
            Assert.IsNotNull(testD.TestD48);
            Assert.IsNotNull(testD.TestD47);
            Assert.IsNotNull(testD.TestD46);
            Assert.IsNotNull(testD.TestD45);
            Assert.IsNotNull(testD.TestD44);
            Assert.IsNotNull(testD.TestD43);
            Assert.IsNotNull(testD.TestD42);
            Assert.IsNotNull(testD.TestD41);
            Assert.IsNotNull(testD.TestD40);

            Assert.IsNotNull(testD.TestD49.TestD39);
            Assert.IsNotNull(testD.TestD49.TestD38);
            Assert.IsNotNull(testD.TestD49.TestD37);
            Assert.IsNotNull(testD.TestD49.TestD36);
            Assert.IsNotNull(testD.TestD49.TestD35);
            Assert.IsNotNull(testD.TestD49.TestD34);
            Assert.IsNotNull(testD.TestD49.TestD33);
            Assert.IsNotNull(testD.TestD49.TestD32);
            Assert.IsNotNull(testD.TestD49.TestD31);
            Assert.IsNotNull(testD.TestD49.TestD30);

            if (singleton)
            {
                Assert.AreEqual(testD.TestD49.TestD39, testD.TestD48.TestD39);
                Assert.AreEqual(testD.TestD49.TestD38, testD.TestD48.TestD38);
                Assert.AreEqual(testD.TestD49.TestD37, testD.TestD48.TestD37);
                Assert.AreEqual(testD.TestD49.TestD36, testD.TestD48.TestD36);
                Assert.AreEqual(testD.TestD49.TestD35, testD.TestD48.TestD35);
                Assert.AreEqual(testD.TestD49.TestD34, testD.TestD48.TestD34);
                Assert.AreEqual(testD.TestD49.TestD33, testD.TestD48.TestD33);
                Assert.AreEqual(testD.TestD49.TestD32, testD.TestD48.TestD32);
                Assert.AreEqual(testD.TestD49.TestD31, testD.TestD48.TestD31);
                Assert.AreEqual(testD.TestD49.TestD30, testD.TestD48.TestD30);
            }
            else
            {
                Assert.AreNotEqual(testD.TestD49.TestD39, testD.TestD48.TestD39);
                Assert.AreNotEqual(testD.TestD49.TestD38, testD.TestD48.TestD38);
                Assert.AreNotEqual(testD.TestD49.TestD37, testD.TestD48.TestD37);
                Assert.AreNotEqual(testD.TestD49.TestD36, testD.TestD48.TestD36);
                Assert.AreNotEqual(testD.TestD49.TestD35, testD.TestD48.TestD35);
                Assert.AreNotEqual(testD.TestD49.TestD34, testD.TestD48.TestD34);
                Assert.AreNotEqual(testD.TestD49.TestD33, testD.TestD48.TestD33);
                Assert.AreNotEqual(testD.TestD49.TestD32, testD.TestD48.TestD32);
                Assert.AreNotEqual(testD.TestD49.TestD31, testD.TestD48.TestD31);
                Assert.AreNotEqual(testD.TestD49.TestD30, testD.TestD48.TestD30);
            }

            if (singletonLast)
            {
                Assert.AreEqual(testD.TestD49.TestD39.TestD29.TestD19.TestD09,
                                testD.TestD48.TestD39.TestD29.TestD19.TestD09);
            }
            else
            {
                Assert.AreNotEqual(testD.TestD49.TestD39.TestD29.TestD19.TestD09,
                                   testD.TestD48.TestD39.TestD29.TestD19.TestD09);
            }

            Assert.IsNotNull(testD.TestD49.TestD39.TestD29);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD28);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD27);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD26);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD25);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD24);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD23);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD22);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD21);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD20);

            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD18);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD17);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD16);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD15);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD14);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD13);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD12);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD11);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD10);

            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19.TestD09);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19.TestD08);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19.TestD07);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19.TestD06);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19.TestD05);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19.TestD04);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19.TestD03);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19.TestD02);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19.TestD01);
            Assert.IsNotNull(testD.TestD49.TestD39.TestD29.TestD19.TestD00);
        }