Exemple #1
0
        public void TestStreamingParsing()
        {
            var x = TestHelper.MakeTempFile("(node {attr 5} [true \"he he\" null])");
            var p = new StreamingParser(x);

            AssertParserToken(p, TokenType.DocumentStart);
            AssertParserToken(p, TokenType.NodeStart);
            Assert.AreEqual(p.NodeName, "node");
            AssertParserToken(p, TokenType.NodeAttributeListStart);
            AssertParserToken(p, TokenType.NodeAttributeStart);
            Assert.AreEqual(p.AttributeName, "attr");
            AssertParserToken(p, TokenType.Literal);
            AssertParserToken(p, TokenType.NodeAttributeEnd);
            AssertParserToken(p, TokenType.NodeAttributeListEnd);
            AssertParserToken(p, TokenType.NodeAfterAttributes);
            AssertParserToken(p, TokenType.NodeChildrenListStart);
            AssertParserToken(p, TokenType.Literal);
            AssertParserToken(p, TokenType.NodeChildrenListAfterChild);
            AssertParserToken(p, TokenType.Literal);
            AssertParserToken(p, TokenType.NodeChildrenListAfterChild);
            AssertParserToken(p, TokenType.Literal);
            AssertParserToken(p, TokenType.NodeChildrenListEnd);
            AssertParserToken(p, TokenType.NodeEnd);
            AssertParserToken(p, TokenType.DocumentEnd);
            Assert.IsTrue(p.Ended);
            Assert.IsTrue(!p.HasError);
            TestHelper.AssertNode(p.Document as Node, "node", 1, 3);
        }
Exemple #2
0
        public void TestAttributeRemoves()
        {
            var s = TestHelper.ParseString("(n {a (av {ava 2} [(avc 3)])})");
            var n = s as Node;

            TestHelper.AssertNode(n, "n", 1, 0);
            TestHelper.AssertNode(n.Attributes["a"] as Node, "av", 1, 1);

            var matches = s.Find("[attr_has_child(@a, avc)]");

            Assert.AreEqual(1, matches.Count);

            s.Remove("avc@0");
            matches = s.Find("[attr_has_child(@a, avc)]");
            Assert.AreEqual(0, matches.Count);

            matches = s.Find("[attr_has_attr(@a, ava)]");
            Assert.AreEqual(1, matches.Count);

            s.Remove("[=2]");
            matches = s.Find("[attr_has_attr(@a, ava)]");
            Assert.AreEqual(0, matches.Count);
        }
Exemple #3
0
        public void TestSomeSearches()
        {
            var s = TestHelper.ParseString("(n [true false null null false null true true null])");
            var n = s as Node;

            TestHelper.AssertNode(n, "n", 0, 9);

            var matches = s.Find("^bool");

            Assert.AreEqual(5, matches.Count);

            matches = s.Find("^boolean");
            Assert.AreEqual(5, matches.Count);

            matches = s.Find("^null");
            Assert.AreEqual(4, matches.Count);

            matches = s.Find("[=null]");
            Assert.AreEqual(4, matches.Count);

            matches = s.Find("[!=null]");
            Assert.AreEqual(0, matches.Count);

            var s2 = TestHelper.ParseString("(node {a 3} [4 4 5 6])");

            s.InsertAt("/", 0, s2);

            matches = s.Find("[>3]");
            Assert.AreEqual(4, matches.Count);

            matches = s.Find("[!=4]");
            Assert.AreEqual(3, matches.Count);

            s = TestHelper.ParseString("(n [\"abba\" \"abab\" \"baba\" \"baab\" \"not a case\"])");

            matches = s.Find("[=\"abba\"]");
            Assert.AreEqual(1, matches.Count);

            matches = s.Find("[!=\"abba\"]");
            Assert.AreEqual(4, matches.Count);

            matches = s.Find("[~=\"ab\"]");
            Assert.AreEqual(4, matches.Count);

            matches = s.Find("[!~=\"ab\"]");
            Assert.AreEqual(1, matches.Count);

            matches = s.Find("[^=\"ab\"]");
            Assert.AreEqual(2, matches.Count);

            matches = s.Find("[!^=\"ab\"]");
            Assert.AreEqual(3, matches.Count);

            matches = s.Find("[$=\"ab\"]");
            Assert.AreEqual(2, matches.Count);

            matches = s.Find("[!$=\"ab\"]");
            Assert.AreEqual(3, matches.Count);

            matches = s.Find("[^=\"not\"]");
            Assert.AreEqual(1, matches.Count);

            matches = s.Find("[!^=\"not\"]");
            Assert.AreEqual(4, matches.Count);

            matches = s.Find("[$=\"case\"]");
            Assert.AreEqual(1, matches.Count);

            matches = s.Find("[!$=\"case\"]");
            Assert.AreEqual(4, matches.Count);

            matches = s.Find("[~=\"a\"]");
            Assert.AreEqual(5, matches.Count);
        }