예제 #1
0
        /// <summary>
        /// Creates an instance of configuration initialized from JSON content passed as string
        /// </summary>
        public static JSONConfiguration CreateFromJSON(string content)
        {
            var result = new JSONConfiguration();
            result.readFromString(content);

            return result;
        }
예제 #2
0
        /// <summary>
        /// Loads the supplied string content in the specified format, which may be format name like "xml" or "laconfig" with or without extension period
        /// </summary>
        public static Configuration ProviderLoadFromString(string content, string format)
        {
            if (format.StartsWith("."))
            {
                format = format.Remove(0, 1);
            }

            //since C# does not support first-class types, these if statements below must handle what AllSupportedFormat returns
            //in future Aum conversion replace with Dictionary<format, configType> lookup

            if (NFX.CodeAnalysis.Laconfig.LaconfigLanguage.Instance.FileExtensions.Any(e => string.Equals(e, format, StringComparison.InvariantCultureIgnoreCase)))
            {
                return(LaconicConfiguration.CreateFromString(content));
            }

            if (NFX.CodeAnalysis.XML.XMLLanguage.Instance.FileExtensions.Any(e => string.Equals(e, format, StringComparison.InvariantCultureIgnoreCase)))
            {
                return(XMLConfiguration.CreateFromXML(content));
            }

            if (NFX.CodeAnalysis.JSON.JSONLanguage.Instance.FileExtensions.Any(e => string.Equals(e, format, StringComparison.InvariantCultureIgnoreCase)))
            {
                return(JSONConfiguration.CreateFromJSON(content));
            }

            throw new ConfigException(StringConsts.CONFIG_NO_PROVIDER_LOAD_FORMAT_ERROR + format);
        }
예제 #3
0
        /// <summary>
        /// Creates an instance of configuration initialized from JSON content passed as string
        /// </summary>
        public static JSONConfiguration CreateFromJSON(string content)
        {
            var result = new JSONConfiguration();

            result.readFromString(content);

            return(result);
        }
예제 #4
0
        public void NodeRename()
        {
            var conf = new NFX.Environment.JSONConfiguration();

            conf.Create();
            conf.Root.AddChildNode("A", null);
            conf.Root["A"].Name = "B";
            Aver.AreEqual("B", conf.Root["B"].Name);
        }
예제 #5
0
        public void ReadOnlyErrorOnNodeRename()
        {
            var conf = new NFX.Environment.JSONConfiguration();

            conf.Create();
            conf.Root.AddChildNode("A", null);
            conf.SetReadOnly(true);
            conf.Root.Name = "changed-name";
        }
예제 #6
0
        public void ReadOnlyErrorOnNodeDelete()
        {
            var conf = new NFX.Environment.JSONConfiguration();

            conf.Create();
            conf.Root.AddChildNode("A", null);
            conf.SetReadOnly(true);
            conf.Root["A"].Delete();
        }
예제 #7
0
        public void NodeCreate()
        {
            var conf = new NFX.Environment.JSONConfiguration();

            conf.Create();
            conf.Root.AddChildNode("A", null);

            Assert.AreEqual("A", conf.Root["A"].Name);
        }
예제 #8
0
        public void RootDelete()
        {
            var conf = new NFX.Environment.JSONConfiguration();

            conf.Create();
            conf.Root.AddChildNode("A", null);

            Assert.AreEqual(true, conf.Root.Exists);
            conf.Root.Delete();
            Assert.AreEqual(false, conf.Root.Exists);
        }
예제 #9
0
        public void NodeDelete()
        {
            var conf = new NFX.Environment.JSONConfiguration();

            conf.Create();
            conf.Root.AddChildNode("A", null);
            conf.Root.AddChildNode("B", null).AddChildNode("B1");
            conf.Root["A"].Delete();
            Assert.AreEqual(false, conf.Root["A"].Exists);
            Assert.AreEqual(true, conf.Root["B"].Exists);

            conf.Root.ResetModified();
            Assert.AreEqual(false, conf.Root["B"].Modified);
            conf.Root["B"]["B1"].Delete();
            Assert.AreEqual(true, conf.Root["B"].Modified);
        }
예제 #10
0
        public void NavigationAndValueAccessors()
        {
            var conf = new NFX.Environment.JSONConfiguration();

            conf.Create();
            conf.Root.AddChildNode("A", 10).AddChildNode("A.A", 20);
            conf.Root.AddChildNode("B", 789);
            conf.Root.AddChildNode("URI", UriKind.RelativeOrAbsolute);

            conf.Root["A"]["A.A"].AddChildNode("MARS", -1000);
            Assert.AreEqual(-1000, conf.Root["A"]["A.A"]["MARS"].ValueAsInt());
            Assert.AreEqual(-1000, conf.Root[0][0][0].ValueAsInt());
            Assert.AreEqual(789, conf.Root[1].ValueAsInt());
            Assert.AreEqual(UriKind.RelativeOrAbsolute, conf.Root["URI"].ValueAsEnum <UriKind>());
            Assert.AreEqual(UriKind.RelativeOrAbsolute, conf.Root["URI"].ValueAsEnum <UriKind>(UriKind.Absolute));
            Assert.AreEqual(UriKind.RelativeOrAbsolute, conf.Root["NONENTITY"].ValueAsEnum <UriKind>(UriKind.RelativeOrAbsolute));
        }
예제 #11
0
        public void EmptySectionAndAttributeNodes()
        {
            var conf = new NFX.Environment.JSONConfiguration();
               conf.Create();
               conf.Root.AddChildNode("A", null).AddChildNode("A.A", "haha!").AddAttributeNode("good", true);

               Assert.AreEqual("haha!", conf.Root["A"]["A.A"].Value);
               Assert.AreEqual(true, conf.Root["A"]["A.A"].Exists);
               Assert.AreEqual(true, conf.Root["A"]["A.A"].AttrByName("good").Exists);
               Assert.AreEqual(true, conf.Root["A"]["A.A"].AttrByIndex(0).Exists);

               Assert.AreEqual(false, conf.Root["A1"]["A.A"].Exists);
               Assert.AreEqual(false, conf.Root["A"]["A.A1"].Exists);

               Assert.AreEqual(false, conf.Root["A"]["A.A"].AttrByName("bad").Exists);
               Assert.AreEqual(false, conf.Root["A"]["A.A"].AttrByIndex(100).Exists);
        }
예제 #12
0
        public void EmptySectionAndAttributeNodes()
        {
            var conf = new NFX.Environment.JSONConfiguration();

            conf.Create();
            conf.Root.AddChildNode("A", null).AddChildNode("A.A", "haha!").AddAttributeNode("good", true);

            Assert.AreEqual("haha!", conf.Root["A"]["A.A"].Value);
            Assert.AreEqual(true, conf.Root["A"]["A.A"].Exists);
            Assert.AreEqual(true, conf.Root["A"]["A.A"].AttrByName("good").Exists);
            Assert.AreEqual(true, conf.Root["A"]["A.A"].AttrByIndex(0).Exists);

            Assert.AreEqual(false, conf.Root["A1"]["A.A"].Exists);
            Assert.AreEqual(false, conf.Root["A"]["A.A1"].Exists);

            Assert.AreEqual(false, conf.Root["A"]["A.A"].AttrByName("bad").Exists);
            Assert.AreEqual(false, conf.Root["A"]["A.A"].AttrByIndex(100).Exists);
        }
예제 #13
0
        public void NavigationAndValueAccessors()
        {
            var conf = new NFX.Environment.JSONConfiguration();
               conf.Create();
               conf.Root.AddChildNode("A", 10).AddChildNode("A.A", 20);
               conf.Root.AddChildNode("B", 789);
               conf.Root.AddChildNode("URI", UriKind.RelativeOrAbsolute);

               conf.Root["A"]["A.A"].AddChildNode("MARS", -1000);
               Assert.AreEqual(-1000, conf.Root["A"]["A.A"]["MARS"].ValueAsInt());
               Assert.AreEqual(-1000, conf.Root[0][0][0].ValueAsInt());
               Assert.AreEqual(789, conf.Root[1].ValueAsInt());
               Assert.AreEqual(UriKind.RelativeOrAbsolute, conf.Root["URI"].ValueAsEnum<UriKind>());
               Assert.AreEqual(UriKind.RelativeOrAbsolute, conf.Root["URI"].ValueAsEnum<UriKind>(UriKind.Absolute));
               Assert.AreEqual(UriKind.RelativeOrAbsolute, conf.Root["NONENTITY"].ValueAsEnum<UriKind>(UriKind.RelativeOrAbsolute));
        }
예제 #14
0
        public void NodeDelete()
        {
            var conf = new NFX.Environment.JSONConfiguration();
               conf.Create();
               conf.Root.AddChildNode("A", null);
               conf.Root.AddChildNode("B", null).AddChildNode("B1");
               conf.Root["A"].Delete();
               Assert.AreEqual(false, conf.Root["A"].Exists);
               Assert.AreEqual(true, conf.Root["B"].Exists);

               conf.Root.ResetModified();
               Assert.AreEqual(false, conf.Root["B"].Modified);
               conf.Root["B"]["B1"].Delete();
               Assert.AreEqual(true, conf.Root["B"].Modified);
        }
예제 #15
0
 public void NodeRename()
 {
     var conf = new NFX.Environment.JSONConfiguration();
        conf.Create();
        conf.Root.AddChildNode("A", null);
        conf.Root["A"].Name = "B";
        Assert.AreEqual("B", conf.Root["B"].Name);
 }
예제 #16
0
 public void ReadOnlyErrorOnNodeDelete()
 {
     var conf = new NFX.Environment.JSONConfiguration();
        conf.Create();
        conf.Root.AddChildNode("A", null);
        conf.SetReadOnly(true);
        conf.Root["A"].Delete();
 }
예제 #17
0
        public void RootDelete()
        {
            var conf = new NFX.Environment.JSONConfiguration();
               conf.Create();
               conf.Root.AddChildNode("A", null);

               Assert.AreEqual(true, conf.Root.Exists);
               conf.Root.Delete();
               Assert.AreEqual(false, conf.Root.Exists);
        }
예제 #18
0
 public void ReadOnlyErrorOnNodeRename()
 {
     var conf = new NFX.Environment.JSONConfiguration();
        conf.Create();
        conf.Root.AddChildNode("A", null);
        conf.SetReadOnly(true);
        conf.Root.Name = "changed-name";
 }