public void FrameworkContainerForCastle_Register_Test1() { FrameworkContainerForCastle container = new FrameworkContainerForCastle(); container.RegisterType <IMockSimple, MockSimple>(); container.Resolve <IMockSimple>().Say(); }
public void FrameworkContainerForCastle_Register_Dependency_Injection_Test1() { FrameworkContainerForCastle container = new FrameworkContainerForCastle(); container.RegisterType <IMockSimple, MockSimple>(); container.RegisterType <IMockConstructorInject, MockConstructorInject>(); container.Resolve <IMockConstructorInject>().Depend(); }
public void FrameworkContainerForCastle_Property_Injection_Test() { FrameworkContainerForCastle container = new FrameworkContainerForCastle(); container.RegisterType <IMockSimple, MockSimple>() .RegisterType <IMockPropertyInjection, MockPropertyInjection>(); container.Resolve <IMockPropertyInjection>().Say(); }
public void FrameworkCompositionResolverForCastle_Basic_Contract_Test() { var types = new Type[] { typeof(MockClass_Basic_Contract) }; FrameworkContainerForCastle container = CompositionTheTypes(types); container.Resolve <IMockClass_Basic_Contract>().Say(); }
public void FrameworkCompositionResolverForCastle_PropertyInjection_By_Key_Type() { var types = new Type[] { typeof(MockClass_PropertyInjection_By_key_Type_a), typeof(MockClass_PropertyInjection_By_Key_Type_b) }; FrameworkContainerForCastle container = CompositionTheTypes(types); container.Resolve <MockClass_PropertyInjection_By_Key_Type_b>("b").Say(); }
public void FrameworkCompositionResolverForCastle_PropertyInjection_By_Contract_Dependency() { var types = new Type[] { typeof(MockClass_PropertyInjection_By_Contract), typeof(MockClass_PropertyInjection_By_Contract_Dependency) }; FrameworkContainerForCastle container = CompositionTheTypes(types); container.Resolve <MockClass_PropertyInjection_By_Contract_Dependency>().Depend(); }
public void FrameworkContainerForCastle_With_Child_Container_Must_One_Child_Test1() { FrameworkContainerForCastle container = new FrameworkContainerForCastle(); container.RegisterType <IMockSimple, MockSimple>(); FrameworkContainerForCastleChild child = new FrameworkContainerForCastleChild("child", container); child.RegisterType <IMockConstructorInject, MockConstructorInject>(); Assert.IsTrue(container.Childs.Count() == 1, "container 에 하나의 자식 Container 를 등록하였지만, Childs 개수가 {0} 이라 오류입니다.", container.Childs.Count()); }
public void FrameworkCompositionResolverForCastle_ConstructorInjection_By_Contract_and_Dependency_Injection() { var types = new Type[] { typeof(MockClass_ConstructorInjection_ContractClass), typeof(MockClass_ConstructorInjection_DependencyClass) }; FrameworkContainerForCastle container = CompositionTheTypes(types); var obj = container.Resolve <MockClass_ConstructorInjection_DependencyClass>(); Assert.IsTrue(obj.Name == "Junil, Um", "ConstructorInjection 이 올바르게 되지 않아 값이 틀려서 오류가 발생"); }
public void FrameworkCompositionResolverForCastle_ConstructorInjection_By_Key() { var types = new Type[] { typeof(MockClass_ConstructorInjection_By_Key_a), typeof(MockClass_ConstructorInjection_By_key_b) }; FrameworkContainerForCastle container = CompositionTheTypes(types); var obj = container.Resolve <MockClass_ConstructorInjection_By_key_b>("b"); Assert.IsTrue(obj.UniqueKey == "a", "ConstructorInjection된 키가 a인데 key 값이 a가 아니어서 오류가 발생"); }
public void FrameworkCompositionResolverForCastle_MethodInjection_By_Key() { var types = new Type[] { typeof(MockClass_MethodInjection_By_Key_a), typeof(MockClass_MethodInjection_By_Key_b) }; FrameworkContainerForCastle container = CompositionTheTypes(types); var obj = container.Resolve <MockClass_MethodInjection_By_Key_b>("b"); Assert.IsTrue(obj.Key == "a", "MethodInjection된 키값이 a여야 하는데 키 값이 달라서 오류가 발생"); }
public void FrameworkCompositionResolverForCastle_PropertyInjection_By_DependencyInjection_DefaultValue() { FrameworkContainerForCastle container = CompositionTheTypes(typeof(MockClass_PropertyInjection_DependencyContract_DefaultValueProperty).ToEnumerable().ToArray()); var name = container.Resolve <MockClass_PropertyInjection_DependencyContract_DefaultValueProperty>().Name; var age = container.Resolve <MockClass_PropertyInjection_DependencyContract_DefaultValueProperty>().Age; TestContext.WriteLine("Name={0}", name); TestContext.WriteLine("Age={0}", age); Assert.IsTrue(name == "Junil, Um", "Name 프로퍼티의 값이 선언된 DependencyInjectionAttribute.DefaultValue 의 값과 달라서 오류가 발생"); Assert.IsTrue(age == 100, "Age 프로퍼티의 값이 선언된 DependencyInjectionAttribute.DefaultValue 의 값과 달라서 오류가 발생"); }
public void FrameworkCompositionResolverForCastle_MethodInjection_By_Injection() { var types = new Type[] { typeof(MockClass_MethodInjection_By_Contract), typeof(MockClass_MethodInjection_By_Dependency) }; FrameworkContainerForCastle container = CompositionTheTypes(types); var obj = container.Resolve <MockClass_MethodInjection_By_Dependency>(); Assert.IsTrue(obj.Key == "Contract", "Execute메서드에 Injection된 값이 틀려서 오류가 발생"); }
public void FrameworkCompositionResolverForCastle_MethodInjection_By_DependencyInjection() { var types = new Type[] { typeof(MockClass_MethodInjection_By_DependencyInjection) }; FrameworkContainerForCastle container = CompositionTheTypes(types); var obj = container.Resolve <MockClass_MethodInjection_By_DependencyInjection>(); Assert.IsTrue(obj.Name == "Junil, Um", "MethodInjection의 DefaultValue로 초기화된 값이 달라서 오류가 발생"); Assert.IsTrue(obj.Age == 100, "MethodInjection의 DefaultValue로 초기화된 값이 달라서 오류가 발생"); }
private FrameworkContainerForCastle CompositionTheTypes(Type[] types) { FrameworkDependencyVisitor visitor = new FrameworkDependencyVisitor(types); var root = visitor.VisitTypes(); WriteToSerialization(root); FrameworkContainerForCastle container = new FrameworkContainerForCastle(); FrameworkCompositionResolverForCastle resolver = new FrameworkCompositionResolverForCastle(container, root); resolver.Compose(); return(container); }
public void FrameworkContainerForCastle_Register_Singleton_Test() { FrameworkContainerForCastle container = new FrameworkContainerForCastle(); container.RegisterType <IMockSimple, MockSimple>(LifetimeFlag.Singleton); var obj = container.Resolve <IMockSimple>(); obj.Name = "엄준일"; obj = container.Resolve <IMockSimple>(); Assert.IsTrue(obj.Name == "엄준일", "FrameworkContainer 에 Singleton 객체를 등록하였지만, 객체의 상태가 변했습니다"); }
public void FrameworkContainerForCastle_Register_PerCall_Test() { FrameworkContainerForCastle container = new FrameworkContainerForCastle(); container.RegisterType <IMockSimple, MockSimple>(LifetimeFlag.PerCall); var obj = container.Resolve <IMockSimple>(); obj.Name = "엄준일"; obj = container.Resolve <IMockSimple>(); Assert.IsTrue(obj.Name == null, "FrameworkContainer 에 PerCall 객체를 등록하였지만, 객체의 상태가 초기값과 다릅니다."); }
public void FrameworkCompositionResolverForCastle_ConstructorInjection_By_DependencyInjection_DefaultValue() { var types = new Type[] { typeof(MockClass_ConstructorInjection_By_DependencyInjection_DefaultValue) }; FrameworkContainerForCastle container = CompositionTheTypes(types); var obj = container.Resolve <MockClass_ConstructorInjection_By_DependencyInjection_DefaultValue>(); Assert.IsTrue(obj.Name == "Junil, Um", "MockClass_ConstructorInjection_By_DefaultValue.Name 값이 DefaultValue 값과 달라서 오류"); Assert.IsTrue(obj.Age == 100, "MockClass_ConstructorInjection_By_DefaultValue.Age 가 DefaultValue 값과 달라서 오류"); }
public void FrameworkCompositionResolverForCastle_PropertyInjection_By_Key() { var types = new Type[] { typeof(MockClass_PropertyInjection_By_Key_a), typeof(MockClass_PropertyInjection_By_Key_b) }; FrameworkContainerForCastle container = CompositionTheTypes(types); var keya = container.Resolve <IMockClass_PropertyInjection_By_Key>("a").Key; var keyb = container.Resolve <IMockClass_PropertyInjection_By_Key>("b").Key; TestContext.WriteLine("Key A = " + keya); TestContext.WriteLine("Key B = " + keyb); Assert.IsTrue(keya == "a", "MockClass_PropertyInjection_By_Key_a 클래스와 계약된 키 값은 a인데, 값이 a가 아니어서 오류"); Assert.IsTrue(keyb == "b", "MockClass_PropertyInjection_By_Key_b 클래스와 계약된 키 값은 b인데, 값이 b가 아니어서 오류"); }