示例#1
0
        public void ConfigCollectionEvents() {
            IniConfigSource source = new IniConfigSource();
            source.Configs.ConfigAdded +=
                new ConfigEventHandler(source_configAdded);
            source.Configs.ConfigRemoved +=
                new ConfigEventHandler(source_configRemoved);

            Assert.AreEqual(configAddedCount, 0);

            eventCollection = null;
            IConfig config = source.AddConfig("Test");
            Assert.IsTrue(source.Configs == eventCollection);
            Assert.AreEqual(configAddedCount, 1);
            Assert.AreEqual("Test", eventConfig.Name);

            eventCollection = null;
            config = source.Configs.Add("Test 2");
            Assert.IsTrue(source.Configs == eventCollection);
            Assert.AreEqual(configAddedCount, 2);
            Assert.AreEqual("Test 2", eventConfig.Name);

            eventCollection = null;
            source.Configs.RemoveAt(0);
            Assert.IsTrue(source.Configs == eventCollection);
            Assert.AreEqual(configAddedCount, 2);
            Assert.AreEqual("Test", eventConfig.Name);
        }
示例#2
0
        public void Reload() {
            string filePath = "Reload.ini";

            // Create the original source file
            IniConfigSource source = new IniConfigSource();

            IConfig petConfig = source.AddConfig("Pets");
            petConfig.Set("cat", "Muffy");
            petConfig.Set("dog", "Rover");
            IConfig weatherConfig = source.AddConfig("Weather");
            weatherConfig.Set("skies", "cloudy");
            weatherConfig.Set("precipitation", "rain");
            source.Save(filePath);

            Assert.AreEqual(2, petConfig.GetKeys().Length);
            Assert.AreEqual("Muffy", petConfig.Get("cat"));
            Assert.AreEqual(2, source.Configs.Count);

            // Create another source file to set values and reload
            IniConfigSource newSource = new IniConfigSource(filePath);

            IConfig compareConfig = newSource.Configs["Pets"];
            Assert.AreEqual(2, compareConfig.GetKeys().Length);
            Assert.AreEqual("Muffy", compareConfig.Get("cat"));
            Assert.IsTrue(compareConfig == newSource.Configs["Pets"],
                          "References before are not equal");

            // Set the new values to source
            source.Configs["Pets"].Set("cat", "Misha");
            source.Configs["Pets"].Set("lizard", "Lizzy");
            source.Configs["Pets"].Set("hampster", "Surly");
            source.Configs["Pets"].Remove("dog");
            source.Configs.Remove(weatherConfig);
            source.Save(); // saves new value

            // Reload the new source and check for changes
            newSource.Reload();
            Assert.IsTrue(compareConfig == newSource.Configs["Pets"],
                          "References after are not equal");
            Assert.AreEqual(1, newSource.Configs.Count);
            Assert.AreEqual(3, newSource.Configs["Pets"].GetKeys().Length);
            Assert.AreEqual("Lizzy", newSource.Configs["Pets"].Get("lizard"));
            Assert.AreEqual("Misha", newSource.Configs["Pets"].Get("cat"));
            Assert.IsNull(newSource.Configs["Pets"].Get("dog"));

            File.Delete(filePath);
        }
示例#3
0
        public void SaveToStream() {
            string filePath = "SaveToStream.ini";
            FileStream stream = new FileStream(filePath, FileMode.Create);

            // Create a new document and save to stream
            IniConfigSource source = new IniConfigSource();
            IConfig config = source.AddConfig("Pets");
            config.Set("dog", "rover");
            config.Set("cat", "muffy");
            source.Save(stream);
            stream.Close();

            IniConfigSource newSource = new IniConfigSource(filePath);
            config = newSource.Configs["Pets"];
            Assert.IsNotNull(config);
            Assert.AreEqual(2, config.GetKeys().Length);
            Assert.AreEqual("rover", config.GetString("dog"));
            Assert.AreEqual("muffy", config.GetString("cat"));

            stream.Close();

            File.Delete(filePath);
        }
示例#4
0
        public void RemoveConfigAndKeyFromFile() {
            string filePath = "Test.ini";

            StreamWriter writer = new StreamWriter(filePath);
            writer.WriteLine("[test 1]");
            writer.WriteLine(" dog = Rover");
            writer.WriteLine("[test 2]");
            writer.WriteLine(" cat = Muffy");
            writer.WriteLine(" lizard = Lizzy");
            writer.Close();

            IniConfigSource source = new IniConfigSource(filePath);
            Assert.IsNotNull(source.Configs["test 1"]);
            Assert.IsNotNull(source.Configs["test 2"]);
            Assert.IsNotNull(source.Configs["test 2"].Get("cat"));

            source.Configs.Remove(source.Configs["test 1"]);
            source.Configs["test 2"].Remove("cat");
            source.AddConfig("cause error");
            source.Save();

            source = new IniConfigSource(filePath);
            Assert.IsNull(source.Configs["test 1"]);
            Assert.IsNotNull(source.Configs["test 2"]);
            Assert.IsNull(source.Configs["test 2"].Get("cat"));

            File.Delete(filePath);
        }
示例#5
0
        public void EmptyConstructor() {
            string filePath = "EmptyConstructor.ini";
            IniConfigSource source = new IniConfigSource();

            IConfig config = source.AddConfig("Pets");
            config.Set("cat", "Muffy");
            config.Set("dog", "Rover");
            config.Set("bird", "Tweety");
            source.Save(filePath);

            Assert.AreEqual(3, config.GetKeys().Length);
            Assert.AreEqual("Muffy", config.Get("cat"));
            Assert.AreEqual("Rover", config.Get("dog"));
            Assert.AreEqual("Tweety", config.Get("bird"));

            source = new IniConfigSource(filePath);
            config = source.Configs["Pets"];

            Assert.AreEqual(3, config.GetKeys().Length);
            Assert.AreEqual("Muffy", config.Get("cat"));
            Assert.AreEqual("Rover", config.Get("dog"));
            Assert.AreEqual("Tweety", config.Get("bird"));

            File.Delete(filePath);
        }
示例#6
0
        public void Contains() {
            IniConfigSource source = new IniConfigSource();

            IConfig config = source.AddConfig("Pets");
            config.Set("cat", "Muffy");
            config.Set("dog", "Rover");

            Assert.IsTrue(config.Contains("cat"));
            Assert.IsTrue(config.Contains("dog"));

            config.Remove("cat");
            Assert.IsFalse(config.Contains("cat"));
            Assert.IsTrue(config.Contains("dog"));
        }
示例#7
0
        public void SaveNewSection() {
            string filePath = "Test.xml";

            StringWriter writer = new StringWriter();
            writer.WriteLine("; some comment");
            writer.WriteLine("[new section]");
            writer.WriteLine(" dog = Rover");
            writer.WriteLine(" cat = Muffy");
            IniConfigSource source = new IniConfigSource
                (new StringReader(writer.ToString()));

            IConfig config = source.AddConfig("test");
            Assert.IsNotNull(source.Configs["test"]);
            source.Save(filePath);

            source = new IniConfigSource(filePath);
            config = source.Configs["new section"];
            Assert.AreEqual("Rover", config.Get("dog"));
            Assert.AreEqual("Muffy", config.Get("cat"));
            Assert.IsNotNull(source.Configs["test"]);

            File.Delete(filePath);
        }
示例#8
0
        public void Rename() {
            IniConfigSource source = new IniConfigSource();

            IConfig config = source.AddConfig("Pets");
            config.Set("cat", "Muffy");
            config.Set("dog", "Rover");

            config.Name = "MyPets";
            Assert.AreEqual("MyPets", config.Name);

            Assert.IsNull(source.Configs["Pets"]);
            IConfig newConfig = source.Configs["MyPets"];

            Assert.AreEqual(config, newConfig);

            Assert.AreEqual(2, newConfig.GetKeys().Length);
        }
示例#9
0
        public void ConfigEvents() {
            IConfigSource source = new IniConfigSource();

            IConfig config = source.AddConfig("Test");
            config.KeySet += new ConfigKeyEventHandler(config_keySet);
            config.KeyRemoved += new ConfigKeyEventHandler(config_keyRemoved);

            // Set key events
            Assert.AreEqual(keySetCount, 0);

            config.Set("Test 1", "Value 1");
            Assert.AreEqual(keySetCount, 1);
            Assert.AreEqual("Test 1", keyName);
            Assert.AreEqual("Value 1", keyValue);

            config.Set("Test 2", "Value 2");
            Assert.AreEqual(keySetCount, 2);
            Assert.AreEqual("Test 2", keyName);
            Assert.AreEqual("Value 2", keyValue);

            // Remove key events
            Assert.AreEqual(keyRemovedCount, 0);

            config.Remove("Test 1");
            Assert.AreEqual(keyRemovedCount, 1);
            Assert.AreEqual("Test 1", keyName);
            Assert.AreEqual("Value 1", keyValue);

            config.Remove("Test 2");
            Assert.AreEqual(keyRemovedCount, 2);
            Assert.AreEqual("Test 2", keyName);
            Assert.AreEqual("Value 2", keyValue);
        }
示例#10
0
        public void ConfigSourceEvents() {
            string filePath = "EventTest.ini";
            IniConfigSource source = new IniConfigSource();
            source.Saved += new EventHandler(source_saved);
            source.Reloaded += new EventHandler(source_reloaded);

            Assert.IsNull(eventConfig);
            Assert.IsNull(eventSource);

            IConfig config = source.AddConfig("Test");

            eventSource = null;
            Assert.AreEqual(savedCount, 0);
            source.Save(filePath);
            Assert.AreEqual(savedCount, 1);
            Assert.IsTrue(source == eventSource);

            eventSource = null;
            source.Save();
            Assert.AreEqual(savedCount, 2);
            Assert.IsTrue(source == eventSource);

            eventSource = null;
            Assert.AreEqual(reloadedCount, 0);
            source.Reload();
            Assert.AreEqual(reloadedCount, 1);
            Assert.IsTrue(source == eventSource);

            File.Delete(filePath);
        }
示例#11
0
        public void AddNewConfigsAndKeys() {
            // Add some new configs and keys here and test.
            StringWriter writer = new StringWriter();
            writer.WriteLine("[Pets]");
            writer.WriteLine(" cat = muffy");
            writer.WriteLine(" dog = rover");
            IniConfigSource source = new IniConfigSource
                (new StringReader(writer.ToString()));

            IConfig config = source.Configs["Pets"];
            Assert.AreEqual("Pets", config.Name);
            Assert.AreEqual(2, config.GetKeys().Length);

            IConfig newConfig = source.AddConfig("NewTest");
            newConfig.Set("Author", "Brent");
            newConfig.Set("Birthday", "February 8th");

            newConfig = source.AddConfig("AnotherNew");

            Assert.AreEqual(3, source.Configs.Count);
            config = source.Configs["NewTest"];
            Assert.IsNotNull(config);
            Assert.AreEqual(2, config.GetKeys().Length);
            Assert.AreEqual("February 8th", config.Get("Birthday"));
            Assert.AreEqual("Brent", config.Get("Author"));
        }
示例#12
0
        public void AddConfig() {
            StringWriter writer = new StringWriter();
            writer.WriteLine("[Test]");
            writer.WriteLine(" bool 1 = TrUe");
            IniConfigSource source = new IniConfigSource
                (new StringReader(writer.ToString()));

            IConfig newConfig = source.AddConfig("NewConfig");
            newConfig.Set("NewKey", "NewValue");
            newConfig.Set("AnotherKey", "AnotherValue");

            IConfig config = source.Configs["NewConfig"];
            Assert.AreEqual(2, config.GetKeys().Length);
            Assert.AreEqual("NewValue", config.Get("NewKey"));
            Assert.AreEqual("AnotherValue", config.Get("AnotherKey"));
        }