public void Get_Resolver_DoesNot_Throws_Exception_Once_SubSystem_Is_Initialised() { // arrange EmbeddedResourceUtil.ExportToPath("Castle.Windsor.Extensions.Test.data", "castle.config", Path.GetTempPath()); string path = Path.GetTempPath() + "\\castle.config"; PropertiesSubSystem subSystem = new PropertiesSubSystem(path); WindsorContainer container = new WindsorContainer(); container.Kernel.AddSubSystem(PropertiesSubSystem.SubSystemKey, subSystem); KernelException actual = null; IPropertyResolver resolver = null; // act try { resolver = subSystem.Resolver; } catch (KernelException e) { actual = e; } // assert Assert.IsNull(actual); Assert.IsNotNull(resolver); }
public void GetValue_Simple_Works_As_Expected() { // arrange EmbeddedResourceUtil.ExportToPath("Castle.Windsor.Extensions.Test.data", "castle.config", Path.GetTempPath()); string path = Path.GetTempPath() + "\\castle.config"; PropertiesSubSystem subSystem = new PropertiesSubSystem(path); WindsorContainer container = new WindsorContainer(); container.Kernel.AddSubSystem(PropertiesSubSystem.SubSystemKey, subSystem); IConversionManager manager = (IConversionManager)container.Kernel.GetSubSystem(SubSystemConstants.ConversionManagerKey); manager.Add(new PersonTypeConverter()); IPropertyResolver resolver = subSystem.Resolver; // act string strParam = resolver.GetValue("strParam"); double dblParam = resolver.GetValue<double>("dblParam"); string[] arrParam = resolver.GetValue<string[]>("arrParam"); IDictionary<string, string> dictParam = resolver.GetValue<IDictionary<string, string>>("dictParam"); List<double> listParam = resolver.GetValue<List<double>>("listParam"); Person[] personArr = resolver.GetValue<Person[]>("personArr"); // assert Assert.AreEqual("this is string", strParam); Assert.AreEqual(20.12, dblParam); Assert.AreEqual("arr item 1", arrParam[0]); Assert.AreEqual(strParam, arrParam[1]); Assert.AreEqual(@"..\etc\config.ini", arrParam[2]); Assert.IsTrue(dictParam.ContainsKey("key1")); Assert.IsTrue(dictParam.ContainsKey("key2")); Assert.AreEqual("value 1", dictParam["key1"]); Assert.AreEqual("value 2", dictParam["key2"]); Assert.AreEqual(21.2, listParam[0]); Assert.AreEqual(3, listParam[1]); Assert.AreEqual(dblParam, listParam[2]); Assert.AreEqual("Mihir", personArr[0].Name); Assert.AreEqual(30, personArr[0].Age); Assert.AreEqual("Sneha", personArr[1].Name); Assert.AreEqual(33, personArr[1].Age); // act Dependency[] dependencies = resolver.TryGetDependencies<TestClass>("strParam", "arrParam", "refParam", "dictParam", "listParam", "personArr"); container.Register(Component.For<TestClass>().DependsOn(dependencies)); // assert Assert.IsNotNull(container.Resolve<TestClass>()); }
public void RelativePathSubDependencyResolver_Resolves_RelativePaths_As_Expected_With_PropertiesResolver() { // arrange EmbeddedResourceUtil.ExportToPath("Castle.Windsor.Extensions.Test.data", "relpath-castle-with-propertiesresolver.config", Path.GetTempPath()); string path = Path.GetTempPath() + "\\relpath-castle-with-propertiesresolver.config"; PropertiesSubSystem subSystem = new PropertiesSubSystem(path); WindsorContainer container = new WindsorContainer(); container.Kernel.AddSubSystem(PropertiesSubSystem.SubSystemKey, subSystem); container.Kernel.Resolver.AddSubResolver(new RelativePathSubDependencyResolver(container.Kernel)); container.Register(Component .For<RelPathTestClass>() .DependsOn( subSystem.Resolver.GetDependency<string>("pathParam"), subSystem.Resolver.GetDependency<string[]>("pathArrParam") )); // act RelPathTestClass obj = container.Resolve<RelPathTestClass>(); // assert Assert.IsNotNull(obj); Assert.AreEqual(m_getFullPath(@"..\etc\config.ini"), obj.PathParam); Assert.AreEqual(3, obj.PathArrParam.Length); Assert.AreEqual(m_getFullPath(@"..\etc\config1.ini"), obj.PathArrParam[0]); Assert.AreEqual(@"C:\temp.ini", obj.PathArrParam[1]); Assert.AreEqual(m_getFullPath(@"..\etc\second.ini"), obj.PathArrParam[2]); }
public void SubSystem_From_Json_File_Initialises_Properly() { // arrange EmbeddedResourceUtil.ExportToPath("Castle.Windsor.Extensions.Test.data", "castle.json", Path.GetTempPath()); string path = Path.GetTempPath() + "\\castle.json"; PropertiesSubSystem subsystem = new PropertiesSubSystem(path); WindsorContainer container = new WindsorContainer(); // act subsystem.Init((IKernelInternal)container.Kernel); // assert Assert.AreEqual("mihir", subsystem.Resolver.GetValue("name")); CollectionAssert.AreEqual(new[] { "chess", "cricket" }, subsystem.Resolver.GetValue<string[]>("hobbies")); IDictionary<string, string> extrasStuffMixed = subsystem.Resolver.GetValue<Dictionary<string, string>>("extraStuffMixed"); Assert.AreEqual("31", extrasStuffMixed["age"]); Assert.AreEqual("male", extrasStuffMixed["sex"]); IDictionary<string, double> extrasStuffFloats = subsystem.Resolver.GetValue<Dictionary<string, double>>("extraStuffFloats"); Assert.AreEqual(4.0, extrasStuffFloats["precision"]); Assert.AreEqual(2.56, extrasStuffFloats["start"]); }
public void Get_Resolver_Throws_Exception_If_SubSystem_Not_Initialised() { // arrange EmbeddedResourceUtil.ExportToPath("Castle.Windsor.Extensions.Test.data", "invalid-castle.config", Path.GetTempPath()); string path = Path.GetTempPath() + "\\invalid-castle.config"; PropertiesSubSystem subSystem = new PropertiesSubSystem(path); const string expectedMessagePrefix = "Error processing node castle"; string actualMessage = string.Empty; IPropertyResolver resolver = null; // act try { resolver = subSystem.Resolver; WindsorContainer container = new WindsorContainer(); container.Kernel.AddSubSystem(PropertiesSubSystem.SubSystemKey, subSystem); } catch (ConfigurationProcessingException e) { actualMessage = e.Message; } // assert Assert.IsNull(resolver); Assert.IsTrue(actualMessage.StartsWith(expectedMessagePrefix)); }
/// <summary> /// Performs the installation in the <see cref="T:Castle.Windsor.IWindsorContainer" />. /// </summary> /// <param name="container">The container.</param> /// <param name="store">The configuration store.</param> public void Install(IWindsorContainer container, IConfigurationStore store) { PropertiesSubSystem subsystem = new PropertiesSubSystem(); container.Kernel.AddSubSystem(SubSystemKey, subsystem); }