Пример #1
0
        public void SetContextOnRegistryTest()
        {
            var container = new GeckoContainer();
            var context   = new ShandyGecko.ShandyGeckoDI.Context();

            container.RegisterInstance(new TestClass(), context);
            Assert.AreEqual(1, context.ContainerRegistries.Count);
        }
Пример #2
0
        private void TryGetRootContainer()
        {
            if (_rootContainer != null)
            {
                return;
            }

            _rootContainer = UnityContainerProvider.Instance.RootContainer;
        }
Пример #3
0
        public void SetContainer(GeckoContainer geckoContainer)
        {
            if (_geckoContainer != null)
            {
                throw new Exception("Container is already set!");
            }

            _geckoContainer = geckoContainer;
        }
Пример #4
0
        public void DefaultConstructorTest()
        {
            var container = new GeckoContainer();

            container.RegisterSingletone <Test1>();

            var actual = container.BuildUpType <Test1>();

            Assert.IsNotNull(actual);
        }
Пример #5
0
        public void SetObjectParameterWithType()
        {
            var container = new GeckoContainer();
            var dummy     = new Dummy();

            container.RegisterSingletone <Test>().SetParameter(new Parameter(dummy, typeof(IDummy)));
            var instance = container.Resolve <Test>();

            Assert.AreEqual(dummy, instance.Dummy);
        }
Пример #6
0
        public void ContainerRegisterInstanceAsWrongInterfaceTest()
        {
            var container = new GeckoContainer();
            var testClass = new TestClass();

            Assert.Throws <ContainerException>(() =>
            {
                container.RegisterInstance(testClass).As <ITest3>();
            });
        }
Пример #7
0
        public void SetParameterWithoutNameTest()
        {
            var container = new GeckoContainer();

            container.RegisterSingletone <Test>().SetParameter(new Parameter(Parameter1));

            var instance = container.Resolve <Test>("", new Parameter(Parameter2));

            Assert.AreEqual(Parameter1, instance.Parameter1);
            Assert.AreEqual(Parameter2, instance.Parameter2);
        }
Пример #8
0
        public void SetObjectParameterWithoutType()
        {
            var container = new GeckoContainer();
            var dummy     = new Dummy();

            container.RegisterSingletone <Test>().SetParameter(new Parameter(dummy));
            Assert.Throws <ContainerException>(() =>
            {
                container.Resolve <Test>();
            });
        }
Пример #9
0
        public void TestInjectInInheritedConstructor()
        {
            var container = new GeckoContainer();
            var test1     = new Test1();

            container.RegisterInstance(test1);

            var child = container.BuildUpType <ChildTest>();

            Assert.IsNotNull(child);
            Assert.AreEqual(test1, child.Test1);
        }
Пример #10
0
        public void MethodInjectionTest()
        {
            var container  = new GeckoContainer();
            var injection1 = new Test1();

            container.RegisterInstance(injection1);

            var actual = container.BuildUpType <Test2>();

            Assert.IsNotNull(actual);
            Assert.AreEqual(injection1, actual.Test1);
        }
Пример #11
0
        public void TestResolveProtectedDependency()
        {
            var container = new GeckoContainer();
            var test1     = new Test1();

            container.RegisterInstance(test1);

            var test2 = new TestProtectedDep();

            container.BuildUp(test2);

            Assert.AreEqual(test1, test2.GetTestDep());
        }
Пример #12
0
        public void ParameterBuildUpTest()
        {
            var container = new GeckoContainer();
            var test2     = new Test2();

            var test1_1 = new Test1();
            var test1_2 = new Test1();

            container.BuildUp(test2, new Parameter(test1_1, "1"), new Parameter(test1_2, "2"));

            Assert.AreEqual(test1_1, test2.Test1_1);
            Assert.AreEqual(test1_2, test2.Test1_2);
        }
Пример #13
0
        public void TestResolveInternalDependency()
        {
            var container = new GeckoContainer();
            var test1     = new Test1();

            container.RegisterInstance(test1);

            var test2 = new TestInternalDep();

            container.BuildUp(test2);

            Assert.AreEqual(test1, test2.Test1);
        }
Пример #14
0
        public void TestResolveInheritedDependency()
        {
            var container = new GeckoContainer();
            var test      = new Test();

            container.RegisterInstance(test);

            var testChild = new TestChild();

            container.BuildUp(testChild);

            Assert.AreEqual(test, testChild.TestDep);
        }
Пример #15
0
        public void ContainerRegisterInstanceTest()
        {
            var container = new GeckoContainer();
            var testClass = new TestClass();

            container.RegisterInstance(testClass);

            Assert.IsTrue(container.IsKeyRegistered <TestClass>());

            var actual = container.Resolve <TestClass>();

            Assert.AreEqual(testClass, actual);
        }
Пример #16
0
        public void ConstructorWithDependencyAttributeInjectionTest()
        {
            var container = new GeckoContainer();
            var injection = new Test1();

            container.RegisterInstance(injection);
            container.RegisterSingletone <Test2>();

            var actual = container.BuildUpType <Test3>();

            Assert.IsNotNull(actual);
            Assert.AreEqual(injection, actual.Test1);
            Assert.IsNotNull(actual.Test2);
        }
Пример #17
0
        public void ContainerRegisterInstanceAsMultipleInterfacesTest()
        {
            var container = new GeckoContainer();
            var testClass = new TestClass();

            container.RegisterInstance(testClass).As <ITest>().As <ITest2>();

            Assert.IsTrue(container.IsKeyRegistered <TestClass>());
            Assert.IsTrue(container.IsKeyRegistered <ITest>());
            Assert.IsTrue(container.IsKeyRegistered <ITest2>());

            var actual = container.Resolve <ITest2>();

            Assert.AreEqual(testClass, actual);
        }
Пример #18
0
        public void ConstructorInjectionTest()
        {
            var container  = new GeckoContainer();
            var injection0 = new Test1();
            var injection1 = new Test1();

            container.RegisterInstance(injection0).WithName("Test0");
            container.RegisterInstance(injection1).WithName("Test1");

            var actual = container.BuildUpType <Test2>();

            Assert.IsNotNull(actual);
            Assert.AreEqual(injection0, actual.Test0);
            Assert.AreEqual(injection1, actual.Test1);
        }
Пример #19
0
        public void ConstructorParameterOverProviderInjection()
        {
            var container = new GeckoContainer();

            var test1Param    = new Test1();
            var test1Provider = new Test1();

            container.RegisterInstance(test1Provider);

            var test2 = container.BuildUpType <Test2>(new Parameter(test1Param));

            Assert.NotNull(test2);
            Assert.AreEqual(test1Param, test2.Test1);
            Assert.AreNotEqual(test1Provider, test2.Test1);
        }
Пример #20
0
        public void ParameterMethodInjectionTest()
        {
            var container = new GeckoContainer();
            var param1    = new Test1();
            var param2    = new Test1();

            var actual = container.BuildUpType <Test2>(
                new Parameter(param1, "TestParam1"),
                new Parameter(param2, "TestParam2"));

            Assert.IsNotNull(actual);
            Assert.AreEqual(param1, actual.TestParam1);
            Assert.AreEqual(param2, actual.TestParam2);
            Assert.AreNotEqual(actual.TestParam1, actual.TestParam2);
        }
Пример #21
0
        public void TestResolveNamedDependency()
        {
            var container = new GeckoContainer();
            var test1     = new Test1();
            var test2     = new Test1();

            container.RegisterInstance(test1).WithName("Test1");
            container.RegisterInstance(test2).WithName("test1");

            var testNamedDep = new TestNamedDep();

            container.BuildUp(testNamedDep);

            Assert.AreEqual(test1, testNamedDep.Test1);
            Assert.AreEqual(test2, testNamedDep.Test2);
        }
Пример #22
0
        public void ContainerRegisterInstanceWithNameAsInterfaceTest()
        {
            var container = new GeckoContainer();
            var testClass = new TestClass();

            container.RegisterInstance(testClass).WithName(TestName).As <ITest>();

            Assert.IsFalse(container.IsKeyRegistered <TestClass>());
            Assert.IsTrue(container.IsKeyRegistered <TestClass>(TestName));

            Assert.IsFalse(container.IsKeyRegistered <ITest>());
            Assert.IsTrue(container.IsKeyRegistered <ITest>(TestName));

            var actual = container.Resolve <ITest>(TestName);

            Assert.AreEqual(testClass, actual);
        }
Пример #23
0
        public void ObjectsResolveTest()
        {
            var dummy = new Dummy();

            var container = new GeckoContainer();

            container.RegisterInstance(dummy);

            container.RegisterSingletone <Test1>();
            container.RegisterSingletone <Test2>();

            var test2Instance = container.Resolve <Test2>();

            Assert.NotNull(test2Instance);
            Assert.NotNull(test2Instance.Test1);
            Assert.NotNull(test2Instance.Test1.Dummy);
            Assert.AreEqual(dummy, test2Instance.Test1.Dummy);
        }
Пример #24
0
 protected abstract void RegisterTypes(GeckoContainer container, Context context);
Пример #25
0
 public static ContainerRegistry RegisterSingletone <T>(this GeckoContainer geckoContainer, BaseContext context = null)
 {
     return(geckoContainer.RegisterProvider <T>(new SingletonProvider <T>(), context));
 }
Пример #26
0
 public static ContainerRegistry RegisterInstance <T>(this GeckoContainer geckoContainer, T obj, BaseContext context = null)
 {
     return(geckoContainer.RegisterProvider <T>(new InstanceProvider <T>(obj), context));
 }
Пример #27
0
 public static ContainerRegistry RegisterType <T>(this GeckoContainer geckoContainer, BaseContext context = null)
 {
     return(geckoContainer.RegisterProvider <T>(new FactoryMethodProvider <T>(), context));
 }