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