Ejemplo n.º 1
0
        internal static void RegisterInstanceWeakRef(TinyIoCContainer container)
        {
            var item = new TestClassDefaultCtor();

            item.Prop1 = "Testing";
            container.Register <TestClassDefaultCtor>(item).WithWeakReference();
        }
Ejemplo n.º 2
0
            public TestClassWithDependency(TestClassDefaultCtor dependency)
            {
                if (dependency == null)
                {
                    throw new ArgumentNullException("dependency");
                }

                Dependency = dependency;
            }
Ejemplo n.º 3
0
        internal static void RegisterFactoryWeakRef(TinyIoCContainer container)
        {
            var source = new TestClassDefaultCtor();

            source.Prop1 = "Testing";

            var item = new Func <TinyIoCContainer, NamedParameterOverloads, TestClassDefaultCtor>((c, p) => source);

            container.Register <TestClassDefaultCtor>(item).WithWeakReference();
        }
Ejemplo n.º 4
0
            public TestClassWithDependencyAndParameters(TestClassDefaultCtor dependency, int param1, string param2)
            {
                if (dependency == null)
                {
                    throw new ArgumentNullException("dependency");
                }

                Dependency = dependency;
                Param1     = param1;
                Param2     = param2;
            }
Ejemplo n.º 5
0
        public void NamedLazyFactory_CalledByDependantClass_ReturnsCorrectInstanceOfType()
        {
            var container = UtilityMethods.GetContainer();
            var item1 = new TestClassDefaultCtor();
            var item2 = new TestClassDefaultCtor();
            container.Register<TestClassDefaultCtor>(item1, "Testing");
            container.Register<TestClassDefaultCtor>(item2);
            container.Register<TestClassWithNamedLazyFactory>();

            var item = container.Resolve<TestClassWithNamedLazyFactory>();

            item.Method1();
            item.Method2();

            Assert.ReferenceEquals(item.Prop1, item1);
            Assert.ReferenceEquals(item.Prop2, item2);
        }
Ejemplo n.º 6
0
        public void ChildContainerResolve_NamedOnlyRegisteredWithParent_ResolvesFromParent()
        {
            var container = UtilityMethods.GetContainer();
            var containerInstance = new TestClassDefaultCtor();
            var child = container.GetChildContainer();
            var childInstance = new TestClassDefaultCtor();
            container.Register<ITestInterface>(containerInstance, "Testing");
            child.Register<ITestInterface>(childInstance);

            var result = child.Resolve<ITestInterface>("Testing");

            Assert.ReferenceEquals(result, containerInstance);
        }
Ejemplo n.º 7
0
        public void ChildContainerCanResolve_NamedOnlyRegisteredWithParent_ReturnsTrue()
        {
            var container = UtilityMethods.GetContainer();
            var containerInstance = new TestClassDefaultCtor();
            var child = container.GetChildContainer();
            var childInstance = new TestClassDefaultCtor();
            container.Register<ITestInterface>(containerInstance, "Testing");
            child.Register<ITestInterface>(childInstance);

            var result = child.CanResolve<ITestInterface>("Testing");

            Assert.IsTrue(result);
        }
Ejemplo n.º 8
0
        public void Resolve_RegisteredInstanceWithFluentMultiInstanceCall_ReturnsMultipleInstance()
        {
            var container = UtilityMethods.GetContainer();
            var input = new TestClassDefaultCtor();
            container.Register<TestClassDefaultCtor>(input).AsMultiInstance();

            var result = container.Resolve<TestClassDefaultCtor>();

            Assert.IsFalse(object.ReferenceEquals(result, input));
        }
Ejemplo n.º 9
0
        public void Resolve_NormalInstanceRegistrationFollowedByNamed_CanResolveNormal()
        {
            var container = UtilityMethods.GetContainer();
            var instance1 = new TestClassDefaultCtor();
            var instance2 = new TestClassDefaultCtor();
            container.Register<TestClassDefaultCtor>(instance1);
            container.Register<TestClassDefaultCtor>(instance2, "TestName");

            var result = container.Resolve<TestClassDefaultCtor>();

            Assert.ReferenceEquals(instance1, result);
        }
Ejemplo n.º 10
0
        public void Resolve_NamedFactoryRegistrationFollowedByNormal_CanResolveNamed()
        {
            var container = UtilityMethods.GetContainer();
            var instance1 = new TestClassDefaultCtor();
            var instance2 = new TestClassDefaultCtor();
            container.Register<TestClassDefaultCtor>((c, p) => instance1, "TestName");
            container.Register<TestClassDefaultCtor>((c, p) => instance2);

            var result = container.Resolve<TestClassDefaultCtor>("TestName");

            Assert.ReferenceEquals(instance1, result);
        }
Ejemplo n.º 11
0
 public void Method2()
 {
     Prop2 = _Factory.Invoke();
 }
Ejemplo n.º 12
0
 public TestClassWithDependency(TestClassDefaultCtor dependency, int param1, string param2)
 {
     Param1 = param1;
     Param2 = param2;
 }
Ejemplo n.º 13
0
 public static bool ClassDefaultCtorParam(TestClassDefaultCtor x)
 {
     return(x.I == 0);
 }
Ejemplo n.º 14
0
        public void Resolve_NamedInstanceRegistrationFollowedByNormal_CanResolveNamed()
        {
            var container = UtilityMethods.GetContainer();
            var instance1 = new TestClassDefaultCtor();
            var instance2 = new TestClassDefaultCtor();
            container.Register<TestClassDefaultCtor>(instance1, "TestName");
            container.Register<TestClassDefaultCtor>(instance2);

            var result = container.Resolve<TestClassDefaultCtor>("TestName");

            Assert.AreSame(instance1, result);
        }
Ejemplo n.º 15
0
        public void Resolved_InterfaceAndImplementationWithInstance_ReturnsCorrectInstance()
        {
            var container = UtilityMethods.GetContainer();
            var item = new TestClassDefaultCtor();
            container.Register<ITestInterface, TestClassDefaultCtor>(item);

            var result = container.Resolve<ITestInterface>();

            Assert.AreSame(item, result);
        }
Ejemplo n.º 16
0
        public void Resolve_InterfaceAndImplementationNamedWithInstance_ReturnsCorrectInstance()
        {
            var container = UtilityMethods.GetContainer();
            var item = new TestClassDefaultCtor();
            var item2 = new TestClassDefaultCtor();
            container.Register<ITestInterface, TestClassDefaultCtor>(item, "TestName");
            container.Register<ITestInterface, TestClassDefaultCtor>(item2);

            var result = container.Resolve<ITestInterface>("TestName");

            Assert.ReferenceEquals(item, result);
        }
Ejemplo n.º 17
0
 public void Method2()
 {
     Prop2 = _Factory.Invoke(String.Empty);
 }
Ejemplo n.º 18
0
        public void Resolve_NamedRegistrationButOnlyUnnamedRegistered_ResolvesCorrectUnnamedRegistrationWithUnnamedFallback()
        {
            var container = UtilityMethods.GetContainer();
            var item = new TestClassDefaultCtor() { Prop1 = "Testing" };
            container.Register<TestClassDefaultCtor>(item);

            var result = container.Resolve<TestClassDefaultCtor>("Testing", new ResolveOptions() { NamedResolutionFailureAction = NamedResolutionFailureActions.AttemptUnnamedResolution });

            Assert.ReferenceEquals(item, result);
        }
Ejemplo n.º 19
0
 public TestClassMultiDepsMultiCtors(TestClassDefaultCtor prop1)
 {
     Prop1 = prop1;
     NumberOfDepsResolved = 1;
 }
Ejemplo n.º 20
0
        public void Resolve_NotAlreadyResolvedSingletonTypeInParentContainerButDependencyInChildContainer_GetsDependencyFromParent()
        {
            var container = UtilityMethods.GetContainer();
            container.Register<ITestInterface2, TestClassWithInterfaceDependency>().AsSingleton();
            var parentInstance = new TestClassDefaultCtor();
            container.Register<ITestInterface>(parentInstance);
            var child = container.GetChildContainer();
            var childInstance = new TestClassDefaultCtor();
            child.Register<ITestInterface>(childInstance);

            var result = child.Resolve<ITestInterface2>() as TestClassWithInterfaceDependency;

            Assert.IsTrue(object.ReferenceEquals(result.Dependency, parentInstance));
        }
Ejemplo n.º 21
0
 public TestClassMultiDepsMultiCtors(TestClassDefaultCtor prop1, TestClassDefaultCtor prop2)
 {
     Prop1 = prop1;
     Prop2 = prop2;
     NumberOfDepsResolved = 2;
 }
Ejemplo n.º 22
0
        public void BuildUp_ObjectWithPropertyDependenciesWithSomeSet_SetsOnlyUnsetDependencies()
        {
            var container = UtilityMethods.GetContainer();
            container.Register<ITestInterface, TestClassDefaultCtor>();
            container.Register<ITestInterface2, TestClass2>();
            var preset = new TestClassDefaultCtor();
            var input = new TestClassPropertyDependencies();
            input.Property1 = preset;

            container.BuildUp(input);

            Assert.ReferenceEquals(preset, input.Property1);
            Assert.IsNotNull(input.Property2);
        }
Ejemplo n.º 23
0
        public void RegisterNonGeneric_TypeImplementingInterfaceInstanceAndName_RegistersAndCanResolve()
        {
            var container = UtilityMethods.GetContainer();
            var instance = new TestClassDefaultCtor();

            container.Register(typeof(ITestInterface), typeof(TestClassDefaultCtor), instance, "TestClass");
            var result = container.Resolve<ITestInterface>("TestClass", ResolveOptions.FailUnregisteredAndNameNotFound);

            Assert.IsInstanceOfType(result, typeof(ITestInterface));
        }
Ejemplo n.º 24
0
        public void ChildContainerResolve_NamedOnlyRegisteredWithParentUnnamedFallbackOn_ResolvesFromChild()
        {
            var container = UtilityMethods.GetContainer();
            var containerInstance = new TestClassDefaultCtor();
            var child = container.GetChildContainer();
            var childInstance = new TestClassDefaultCtor();
            container.Register<ITestInterface>(containerInstance, "Testing");
            child.Register<ITestInterface>(childInstance);

            var result = child.Resolve<ITestInterface>("Testing", new ResolveOptions() { NamedResolutionFailureAction = NamedResolutionFailureActions.AttemptUnnamedResolution });

            Assert.ReferenceEquals(result, childInstance);
        }
Ejemplo n.º 25
0
 public void Register_InterfaceAndImplementationWithInstance_Registers()
 {
     var container = UtilityMethods.GetContainer();
     var item = new TestClassDefaultCtor();
     container.Register<ITestInterface, TestClassDefaultCtor>(item);
 }
Ejemplo n.º 26
0
        public void ChildContainerResolve_TypeRegisteredWithParentAndChild_ResolvesChildVersion()
        {
            var container = UtilityMethods.GetContainer();
            var containerInstance = new TestClassDefaultCtor();
            var child = container.GetChildContainer();
            var childInstance = new TestClassDefaultCtor();
            container.Register<ITestInterface>(containerInstance);
            child.Register<ITestInterface>(childInstance);

            var result = child.Resolve<ITestInterface>();

            Assert.ReferenceEquals(result, childInstance);
        }
Ejemplo n.º 27
0
        public void Register_NamedInstanceRegistration_CanRegister()
        {
            var container = UtilityMethods.GetContainer();
            var item = new TestClassDefaultCtor();

            container.Register<TestClassDefaultCtor>(item, "TestName");
        }
Ejemplo n.º 28
0
        public void RegisterNonGeneric_BasicTypeAndInstance_RegistersAndCanResolve()
        {
            var container = UtilityMethods.GetContainer();
            var instance = new TestClassDefaultCtor();

            container.Register(typeof(TestClassDefaultCtor), instance);
            var result = container.Resolve<TestClassDefaultCtor>(ResolveOptions.FailUnregisteredAndNameNotFound);

            Assert.ReferenceEquals(instance, result);
        }
Ejemplo n.º 29
0
        public void Resolve_ContainerHierarchy_ResolvesCorrectlyUsingHierarchy()
        {
            var rootContainer = UtilityMethods.GetContainer();
            var firstChildContainer = rootContainer.GetChildContainer();
            var secondChildContainer = firstChildContainer.GetChildContainer();
            var rootInstance = new TestClassDefaultCtor();
            var firstChildInstance = new TestClassDefaultCtor();
            var secondChildInstance = new TestClassDefaultCtor();
            rootContainer.Register<ITestInterface2, TestClassWithInterfaceDependency>().AsMultiInstance();
            rootContainer.Register<ITestInterface>(rootInstance);
            firstChildContainer.Register<ITestInterface>(firstChildInstance);
            secondChildContainer.Register<ITestInterface>(secondChildInstance);
            rootContainer.Resolve<ITestInterface2>();

            var result = secondChildContainer.Resolve<ITestInterface2>() as TestClassWithInterfaceDependency;

            Assert.IsTrue(object.ReferenceEquals(result.Dependency, secondChildInstance));
        }
Ejemplo n.º 30
0
        public void Resolve_IEnumerableDependencyClassInChildContainerParentContainerMultiInstanceRegistrationWithDependencyInChildContainer_ReturnsRegistrationWithChildContainerDependencyInstance()
        {
            var parentContainer = UtilityMethods.GetContainer();
            var childContainer = parentContainer.GetChildContainer();
            var parentInstance = new TestClassDefaultCtor();
            var childInstance = new TestClassDefaultCtor();
            parentContainer.Register<ITestInterface2, TestClassWithInterfaceDependency>("1").AsMultiInstance();
            parentContainer.Register<ITestInterface>(parentInstance);
            childContainer.Register<ITestInterface2, TestClassWithInterfaceDependency>("2").AsMultiInstance();
            childContainer.Register<ITestInterface>(childInstance);
            childContainer.Register<TestClassEnumerableDependency2>();

            var result = childContainer.Resolve<TestClassEnumerableDependency2>().Enumerable.ToArray();
            var item1 = result[0] as TestClassWithInterfaceDependency;
            var item2 = result[1] as TestClassWithInterfaceDependency;

            Assert.IsNotNull(item1);
            Assert.IsNotNull(item2);
            Assert.IsFalse(object.ReferenceEquals(item1, item2), "items are same instance");
            Assert.IsTrue(object.ReferenceEquals(item1.Dependency, childInstance), "item1 has wrong dependency");
            Assert.IsTrue(object.ReferenceEquals(item2.Dependency, childInstance), "item2 has wrong dependency");
        }
Ejemplo n.º 31
0
        public void ResolveAll_ChildContainerRegistrationOverridesParentContainerRegistration_ReturnsChildRegistrations()
        {
            var parentContainer = UtilityMethods.GetContainer();
            var childContainer = parentContainer.GetChildContainer();
            var parentInstance = new TestClassDefaultCtor();
            var childInstance = new TestClassDefaultCtor();
            parentContainer.Register<ITestInterface>(parentInstance, "1");
            childContainer.Register<ITestInterface>(childInstance, "1");

            var result = childContainer.ResolveAll<ITestInterface>();

            Assert.AreEqual(1, result.Count());
            Assert.AreSame(childInstance, result.Single());
        }