public void InjectorUsesChildInjectorForSpecifiedMapping() { injector.Map(typeof(RobotFoot)); InjectionMapping leftFootMapping = injector.Map(typeof(RobotLeg), "leftLeg"); Injector leftChildInjector = injector.CreateChildInjector(); leftChildInjector.Map(typeof(RobotAnkle)); leftChildInjector.Map(typeof(RobotFoot)).ToType(typeof(LeftRobotFoot)); leftFootMapping.SetInjector(leftChildInjector); InjectionMapping rightFootMapping = injector.Map(typeof(RobotLeg), "rightLeg"); Injector rightChildInjector = injector.CreateChildInjector(); rightChildInjector.Map(typeof(RobotAnkle)); rightChildInjector.Map(typeof(RobotFoot)).ToType(typeof(RightRobotFoot)); rightFootMapping.SetInjector(rightChildInjector); RobotBody robotBody = injector.InstantiateUnmapped <RobotBody>(); Assert.IsInstanceOf <RightRobotFoot>(robotBody.rightLeg.ankle.foot, "Right RobotLeg should have a RightRobotFoot"); Assert.IsInstanceOf <LeftRobotFoot>(robotBody.leftLeg.ankle.foot, "Left RobotLeg should have a LeftRobotFoot"); }
public void childInjectorDoesntReturnToParentAfterUsingParentInjectorForMissingMappings() { injector.Map(typeof(RobotAnkle)); injector.Map(typeof(RobotFoot)); injector.Map(typeof(RobotToes)); InjectionMapping leftFootMapping = injector.Map(typeof(RobotLeg), "leftLeg"); Injector leftChildInjector = injector.CreateChildInjector(); leftChildInjector.Map(typeof(RobotFoot)).ToType(typeof(LeftRobotFoot)); leftFootMapping.SetInjector(leftChildInjector); InjectionMapping rightFootMapping = injector.Map(typeof(RobotLeg), "rightLeg"); Injector rightChildInjector = injector.CreateChildInjector(); rightChildInjector.Map(typeof(RobotFoot)).ToType(typeof(RightRobotFoot)); rightFootMapping.SetInjector(rightChildInjector); RobotBody robotBody = injector.InstantiateUnmapped <RobotBody>(); Assert.IsInstanceOf <RightRobotFoot>(robotBody.rightLeg.ankle.foot, "Right RobotFoot should have RightRobotFoot"); Assert.IsInstanceOf <LeftRobotFoot>(robotBody.leftLeg.ankle.foot, "Left RobotFoot should have LeftRobotFoot"); }
public void ChildInjectorUsesParentForMissingMappings() { injector.Map(typeof(RobotFoot)); injector.Map(typeof(RobotToes)); InjectionMapping leftFootMapping = injector.Map(typeof(RobotLeg), "leftLeg"); Injector leftChildInjector = injector.CreateChildInjector(); leftChildInjector.Map(typeof(RobotAnkle)); leftChildInjector.Map(typeof(RobotFoot)).ToType(typeof(LeftRobotFoot)); leftFootMapping.SetInjector(leftChildInjector); InjectionMapping rightFootMapping = injector.Map(typeof(RobotLeg), "rightLeg"); Injector rightChildInjector = injector.CreateChildInjector(); rightChildInjector.Map(typeof(RobotAnkle)); rightChildInjector.Map(typeof(RobotFoot)).ToType(typeof(RightRobotFoot)); rightFootMapping.SetInjector(rightChildInjector); RobotBody robotBody = injector.InstantiateUnmapped <RobotBody>(); Assert.IsInstanceOf <RobotToes>(robotBody.rightLeg.ankle.foot.toes, "Right RobotFoot should have toes"); Assert.IsInstanceOf <RobotToes>(robotBody.leftLeg.ankle.foot.toes, "Right RobotFoot should have toes"); }