public void ExpandKeyValuesMerge() { StringWriter writer = new StringWriter(); writer.WriteLine("[web]"); writer.WriteLine(" protocol = http"); writer.WriteLine("[server]"); writer.WriteLine(" domain1 = ${web|protocol}://nini.sf.net/"); IniConfigSource source = new IniConfigSource (new StringReader(writer.ToString())); StringWriter newWriter = new StringWriter(); newWriter.WriteLine("[web]"); newWriter.WriteLine(" apache = Apache implements ${protocol}"); newWriter.WriteLine("[server]"); newWriter.WriteLine(" domain2 = ${web|protocol}://nini.sf.net/"); IniConfigSource newSource = new IniConfigSource (new StringReader(newWriter.ToString())); source.Merge(newSource); source.ExpandKeyValues(); IConfig config = source.Configs["web"]; Assert.AreEqual("http", config.Get("protocol")); Assert.AreEqual("Apache implements http", config.Get("apache")); config = source.Configs["server"]; Assert.AreEqual("http://nini.sf.net/", config.Get("domain1")); Assert.AreEqual("http://nini.sf.net/", config.Get("domain2")); }
public void MergeAndSave() { string fileName = "NiniConfig.ini"; StreamWriter fileWriter = new StreamWriter(fileName); fileWriter.WriteLine("[Pets]"); fileWriter.WriteLine("cat = Muffy"); // overwrite fileWriter.WriteLine("dog = Rover"); // new fileWriter.WriteLine("bird = Tweety"); fileWriter.Close(); StringWriter writer = new StringWriter(); writer.WriteLine("[Pets]"); writer.WriteLine("cat = Becky"); // overwrite writer.WriteLine("lizard = Saurus"); // new writer.WriteLine("[People]"); writer.WriteLine(" woman = Jane"); writer.WriteLine(" man = John"); IniConfigSource iniSource = new IniConfigSource (new StringReader(writer.ToString())); IniConfigSource source = new IniConfigSource(fileName); source.Merge(iniSource); IConfig config = source.Configs["Pets"]; Assert.AreEqual(4, config.GetKeys().Length); Assert.AreEqual("Becky", config.Get("cat")); Assert.AreEqual("Rover", config.Get("dog")); Assert.AreEqual("Saurus", config.Get("lizard")); config = source.Configs["People"]; Assert.AreEqual(2, config.GetKeys().Length); Assert.AreEqual("Jane", config.Get("woman")); Assert.AreEqual("John", config.Get("man")); config.Set("woman", "Tara"); config.Set("man", "Quentin"); source.Save(); source = new IniConfigSource(fileName); config = source.Configs["Pets"]; Assert.AreEqual(4, config.GetKeys().Length); Assert.AreEqual("Becky", config.Get("cat")); Assert.AreEqual("Rover", config.Get("dog")); Assert.AreEqual("Saurus", config.Get("lizard")); config = source.Configs["People"]; Assert.AreEqual(2, config.GetKeys().Length); Assert.AreEqual("Tara", config.Get("woman")); Assert.AreEqual("Quentin", config.Get("man")); File.Delete(fileName); }
public void MergeItself() { StringWriter writer = new StringWriter(); writer.WriteLine("[People]"); writer.WriteLine(" woman = Jane"); writer.WriteLine(" man = John"); IniConfigSource iniSource = new IniConfigSource(new StringReader(writer.ToString())); iniSource.Merge(iniSource); // exception }