示例#1
0
        public void EmptyConstructor()
        {
            string filePath = "EmptyConstructor.xml";
            XmlConfigSource source = new XmlConfigSource ();

            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 XmlConfigSource (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);
        }
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GeneralSettings"/> class.
        /// </summary>
        /// <remarks>
        /// Internal to prevent construction of this class by any other
        /// assembly.  This class is intended to be constructed by the
        /// <see cref="Configuration"/> class only.
        /// </remarks>
        /// <param name="configurationSource">Reference to the
        /// configuration source that contains the configuration file.</param>
        internal GeneralSettings(XmlConfigSource configurationSource)
        {
            _config = configurationSource.Configs["General"];

            if (_config == null)
            {
                _config = configurationSource.AddConfig("General");
                SetDefaults();
            }
        }
示例#3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DatabaseSettings"/> class.
        /// </summary>
        /// <remarks>
        /// Internal to prevent construction of this class by any other
        /// assembly.  This class is intended to be constructed by the
        /// <see cref="Configuration"/> class only.
        /// </remarks>
        /// <param name="configurationSource">Reference to the
        /// configuration source that contains the configuration file.</param>
        internal DatabaseSettings(XmlConfigSource configurationSource)
        {
            _config = configurationSource.Configs["Database"];

            if (_config == null)
            {
                _config = configurationSource.AddConfig("Database");
                SetDefaults();
            }
        }
示例#4
0
        public void SaveToStream()
        {
            string filePath = "SaveToStream.ini";
            FileStream stream = new FileStream (filePath, FileMode.Create);

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

            XmlConfigSource newSource = new XmlConfigSource (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);
        }
示例#5
0
        public void SaveNewSection()
        {
            string filePath = "Test.xml";

            StringWriter textWriter = new StringWriter ();
            XmlTextWriter writer = NiniWriter (textWriter);
            WriteSection (writer, "new section");
            WriteKey (writer, "dog", "Rover");
            WriteKey (writer, "cat", "Muffy");
            writer.WriteEndDocument ();

            XmlDocument doc = new XmlDocument ();
            doc.LoadXml (textWriter.ToString ());
            doc.Save (filePath);

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

            source = new XmlConfigSource (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);
        }
示例#6
0
        public void RemoveConfigAndKeyFromFile()
        {
            string filePath = "Test.xml";

            StreamWriter xmlWriter = new StreamWriter (filePath);
            XmlTextWriter writer = NiniWriter (xmlWriter);
            WriteSection (writer, "test 1");
            WriteKey (writer, "dog", "Rover");
            writer.WriteEndElement ();
            WriteSection (writer, "test 2");
            WriteKey (writer, "cat", "Muffy");
            WriteKey (writer, "lizard", "Lizzy");
            writer.WriteEndDocument ();
            xmlWriter.Close ();

            XmlConfigSource source = new XmlConfigSource (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 XmlConfigSource (filePath);
            Assert.IsNull (source.Configs["test 1"]);
            Assert.IsNotNull (source.Configs["test 2"]);
            Assert.IsNull (source.Configs["test 2"].Get ("cat"));

            File.Delete (filePath);
        }
示例#7
0
        public void Reload()
        {
            string filePath = "Reload.xml";
            XmlConfigSource source = new XmlConfigSource ();

            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);

            XmlConfigSource newSource = new XmlConfigSource (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);
        }