public void AttributeRecovery() { var parser = new TestXmlParser(CreateRootState()); parser.Parse(@" <doc> <tag.a> <tag.b arg='fff' sdd = sdsds= 'foo' ff = 5 $ /> </tag.a> <a><b valid/></a> </doc> ", delegate { parser.AssertStateIs <XmlTagState> (); parser.AssertAttributes("arg", "fff", "sdd", "sdsds", "ff", "5"); parser.AssertErrorCount(3); } ); parser.AssertEmpty(); parser.AssertErrorCount(4); }
public void Attributes() { var parser = new TestXmlParser(CreateRootState()); parser.Parse(@" <doc> <tag.a name=""foo"" arg=5 wibble = 6 bar.baz = 'y.ff7]' $ /> </doc> ", delegate { parser.AssertStateIs <XmlTagState> (); parser.AssertAttributes("name", "foo", "arg", "5", "wibble", "6", "bar.baz", "y.ff7]"); } ); parser.AssertEmpty(); parser.AssertErrorCount(0); }
public void AttributeName() { var parser = new TestXmlParser(CreateRootState()); parser.Parse(@" <doc> <tag.a> <tag.b id=""$foo"" /> </tag.a> </doc> ", delegate { parser.AssertStateIs <XmlAttributeValueState> (); parser.AssertPath("//doc/tag.a/tag.b/@id"); } ); parser.AssertEmpty(); parser.AssertErrorCount(0); }
public void NamespacedAttributes() { var parser = new TestXmlParser(CreateRootState(), true); parser.Parse(@"<tag foo:bar='1' foo:bar:baz='2' foo='3' />"); parser.AssertEmpty(); var doc = (XDocument)parser.Nodes.Peek(); var el = (XElement)doc.FirstChild; Assert.AreEqual(3, el.Attributes.Count()); Assert.AreEqual("foo", el.Attributes.ElementAt(0).Name.Prefix); Assert.AreEqual("bar", el.Attributes.ElementAt(0).Name.Name); Assert.AreEqual("foo", el.Attributes.ElementAt(1).Name.Prefix); Assert.AreEqual("bar:baz", el.Attributes.ElementAt(1).Name.Name); Assert.IsNull(el.Attributes.ElementAt(2).Name.Prefix); Assert.AreEqual("foo", el.Attributes.ElementAt(2).Name.Name); Assert.AreEqual(3, el.Attributes.Count()); parser.AssertErrorCount(1); Assert.AreEqual(1, parser.Errors [0].Region.Begin.Line); Assert.AreEqual(26, parser.Errors [0].Region.Begin.Column); }
public void SimpleTree() { var parser = new TestXmlParser(CreateRootState(), true); parser.Parse(@" <doc> <a> <b> <c/> <d> <e/> </d> <f> <g/> </f> </b> </a> </doc>"); parser.AssertErrorCount(0); var doc = ((XDocument)parser.Nodes.Peek()).RootElement; Assert.NotNull(doc); Assert.AreEqual("doc", doc.Name.Name); Assert.True(doc.IsEnded); var a = (XElement)doc.FirstChild; Assert.NotNull(a); Assert.AreEqual("a", a.Name.Name); Assert.True(a.IsEnded); Assert.False(a.IsSelfClosing); Assert.IsNull(a.NextSibling); var b = (XElement)a.FirstChild; Assert.NotNull(b); Assert.AreEqual("b", b.Name.Name); Assert.True(b.IsEnded); Assert.False(b.IsSelfClosing); Assert.IsNull(b.NextSibling); var c = (XElement)b.FirstChild; Assert.NotNull(c); Assert.AreEqual("c", c.Name.Name); Assert.True(c.IsEnded); Assert.True(c.IsSelfClosing); Assert.IsNull(c.FirstChild); var d = (XElement)c.NextSibling; Assert.True(d.IsEnded); Assert.False(d.IsSelfClosing); Assert.AreEqual("d", d.Name.Name); var e = (XElement)d.FirstChild; Assert.NotNull(e); Assert.True(e.IsEnded); Assert.True(e.IsSelfClosing); Assert.AreEqual("e", e.Name.Name); var f = (XElement)d.NextSibling; Assert.AreEqual(f, b.LastChild); Assert.True(f.IsEnded); Assert.False(f.IsSelfClosing); Assert.AreEqual("f", f.Name.Name); var g = (XElement)f.FirstChild; Assert.NotNull(g); Assert.True(g.IsEnded); Assert.True(g.IsSelfClosing); Assert.AreEqual("g", g.Name.Name); }