Пример #1
0
        public void ArrayTest()
        {
            // arrange
            var list = new DataModelList {
                new DataModelList {
                    ["key1"] = "val1"
                }, new DataModelList {
                    ["key2"] = "val2"
                }
            };
            var root = new DataModelList {
                ["root"] = list
            };

            /*			list.Add("", "empty");
             *                      list.Add(":#$%", "symbol");
             *                      list.Add("b", true);
             *                      list.Add("n", 1.5);
             *                      list.Add("dttm", DateTime.UtcNow);
             *                      list.Add("nl", DataModelValue.Null);
             *                      list.Add("undef", default);
             *                      list.Add(null, default, default);*/
            var nav = new DataModelXPathNavigator(root);

            // act
            var _ = (XPathNodeIterator?)nav.Evaluate("/root/node()");

            // assert
            //Assert.AreEqual(expected: "e", xml);
        }
Пример #2
0
        public void ValuesOfObjectPropertiesShouldBeConcatenatedThroughValue_IfRootIsComplexObject()
        {
            // arrange
            var v = DataModelValue.FromObject(new { prop = "1", obj = new { prop1 = "1", prop2 = "1" } });

            // act
            var value = new DataModelXPathNavigator(v).Evaluate("string(.)");

            // assert
            Assert.AreEqual(expected: "111", value);
        }
Пример #3
0
        public void ValueOfObjectPropertyShouldBeAvailableThroughValue_IfRootIsObject()
        {
            // arrange
            var v = DataModelValue.FromObject(new { prop = "value" });

            // act
            var value = new DataModelXPathNavigator(v).Evaluate("string(prop)");

            // assert
            Assert.AreEqual(expected: "value", value);
        }
Пример #4
0
        public void ConditionShouldBeConvertedToBoolean_IfRootIsString()
        {
            // arrange
            var v = DataModelValue.FromString("5.5");

            // act
            var value = new DataModelXPathNavigator(v).Evaluate("sum(.) > 1.0");

            // assert
            Assert.AreEqual(expected: true, value);
        }
Пример #5
0
        public void NumberShouldBeConvertedToDouble_IfRootIsString()
        {
            // arrange
            var v = DataModelValue.FromString("5.5");

            // act
            var value = new DataModelXPathNavigator(v).Evaluate("sum(.)");

            // assert
            Assert.AreEqual(expected: 5.5, value);
        }
Пример #6
0
        public void SimpleStringShouldBeConvertedToString_IfRootIsString()
        {
            // arrange
            var v = DataModelValue.FromString("StrVal");

            // act
            var value = new DataModelXPathNavigator(v).Evaluate("string(.)");

            // assert
            Assert.AreEqual(expected: "StrVal", value);
        }
Пример #7
0
        public void LocalNameShouldBeEmpty_IfTypeIsList()
        {
            // arrange
            var v = DataModelValue.FromObject(new { key = "value" });

            // act
            var value = new DataModelXPathNavigator(v);

            // assert
            Assert.AreEqual(expected: "", value.LocalName);
        }
Пример #8
0
        public void LocalNameShouldBeText_IfTypeIsNumeric()
        {
            // arrange
            var v = DataModelValue.FromObject(55);

            // act
            var value = new DataModelXPathNavigator(v);

            // assert
            Assert.AreEqual(expected: "#text", value.LocalName);
        }
Пример #9
0
        public void LocalNameShouldBePropName_IfTypeIsList()
        {
            // arrange
            var v = DataModelValue.FromObject(new { key = "value" });

            // act
            var value = new DataModelXPathNavigator(v);

            value.MoveToFirstChild();

            // assert
            Assert.AreEqual(expected: "key", value.LocalName);
        }
Пример #10
0
        public void CanSelectSubNode_IfRootIsComplexObject()
        {
            // arrange
            var v = DataModelValue.FromObject(new
            {
                /*prop = "value", */ obj = new { prop1 = "val1", prop2 = "target" }
            });

            // act
            var value = new DataModelXPathNavigator(v).Evaluate("string(obj/prop2)");

            // assert
            Assert.AreEqual(expected: "target", value);
        }
Пример #11
0
        public void RenderValidXml2()
        {
                        #pragma warning disable IDE0059
            const string xpath           = "string(/a)";
            var          xPathExpression = XPathExpression.Compile(xpath);

            const string s = "<a xmlns:ss='dsf'><ss:eee/></a>";

            var t = XmlConverter.FromXml(s);

            var xmlDocument = new XmlDocument();
            xmlDocument.LoadXml(s);
            var navigatorDoc = xmlDocument.CreateNavigator();

            var navigator = new DataModelXPathNavigator(t);

            var s1  = navigator.MoveToFirstChild();
            var s1a = navigator.MoveToFirstChild();
            var navigatorIsEmptyElement = navigator.IsEmptyElement;
            var s2q   = navigator.MoveToFirstAttribute();
            var s2qs  = navigator.MoveToNextAttribute();
            var s2qw  = navigator.MoveToParent();
            var as2q  = navigator.MoveToFirstNamespace(XPathNamespaceScope.Local);
            var as2qs = navigator.MoveToNextNamespace(XPathNamespaceScope.Local);
            var as2qa = navigator.MoveToNextNamespace(XPathNamespaceScope.Local);
            var as2qw = navigator.MoveToParent();

            var s2 = navigator.MoveToNext();
            var s3 = navigator.MoveToParent();

            var navigatorHasAttributes = navigator.HasAttributes;
            var moveToFirstAttribute   = navigator.MoveToFirstAttribute();
            if (moveToFirstAttribute)
            {
                navigator.MoveToParent();
            }

            var moveToFirstNamespace = navigator.MoveToFirstNamespace(XPathNamespaceScope.ExcludeXml);
            navigator.MoveToNextNamespace(XPathNamespaceScope.ExcludeXml);
            if (moveToFirstNamespace)
            {
                navigator.MoveToParent();
            }
                        #pragma warning restore IDE0059
        }
Пример #12
0
        public void TempTest()
        {
            // arrange
            var n    = DataModelValue.FromObject(new { child1 = "val1", child2 = "val2" });
            var v    = DataModelValue.FromObject(new { key = "value" });
            var nNav = new DataModelXPathNavigator(n);
            var vNav = new DataModelXPathNavigator(v);

            vNav.MoveToFirstChild();

            // act
            vNav.ReplaceChildren(new XPathObject(nNav.Evaluate("child::*") !));

            // assert
            v.AsList().TryGet(key: "key", caseInsensitive: false, out var v1);
            v1.Value.AsList().TryGet(key: "child1", caseInsensitive: false, out var v2);
            Assert.AreEqual(expected: "val1", v2.Value.AsString());
        }
Пример #13
0
        public void RenderValidXml()
        {
            // arrange
            var root = new DataModelList
            {
                {
                    "root",
                    new DataModelList
                    {
                        { "item", "val1" },
                        { "item", "val2" }
                    },
                    new DataModelList
                    {
                        "prefix",
                        "namespace-uri",
                        "attr1", "aVal1", "", "",
                        "attr2", "aVal2", "pfx", "attr-ns",
                        "myNs", "myNamespace", "", "http://www.w3.org/2000/xmlns/"
                    }
                }
            };


            // act
            var navigator = new DataModelXPathNavigator(root);

            // assert
            var xml = navigator.InnerXml;

            var value = XmlConverter.FromXml(xml);

            var n2   = new DataModelXPathNavigator(value);
            var xml2 = n2.InnerXml;

            var dataModelValue2 = XmlConverter.FromXml(xml2);

            var n3 = new DataModelXPathNavigator(dataModelValue2);
            var _  = n3.InnerXml;
        }