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);
        }
示例#3
0
        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
        }
示例#4
0
        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
        }
示例#6
0
        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"));
        }