public void IncompleteTags() { var parser = new TestXmlParser(CreateRootState()); parser.Parse(@" <doc> <tag.a att1 > <tag.b att2="" > <tag.c att3 = ' <tag.d $ att4 = > <tag.e att5='' att6=' att7 = > <tag.f id='$foo' /> </tag.e> </tag.d> </tag.c> </tag.b> </tag.a> </doc> ", delegate { parser.AssertStateIs <XmlTagState> (); Assert.IsFalse(parser.Nodes.Peek(1).IsComplete); parser.AssertNodeDepth(6); parser.AssertPath("//doc/tag.a/tag.b/tag.c/tag.d"); }, delegate { parser.AssertStateIs <XmlAttributeValueState> (); parser.AssertNodeDepth(9); Assert.IsTrue(parser.Nodes.Peek(3) is XElement eld && eld.Name.Name == "tag.d" && eld.IsComplete); Assert.IsTrue(parser.Nodes.Peek(2) is XElement ele && ele.Name.Name == "tag.e" && !ele.IsComplete); Assert.IsTrue(parser.Nodes.Peek(1) is XElement elf && elf.Name.Name == "tag.f" && !elf.IsComplete); Assert.IsTrue(parser.Nodes.Peek() is XAttribute att && !att.IsComplete); parser.AssertPath("//doc/tag.a/tag.b/tag.c/tag.d/tag.e/tag.f/@id"); }
public void Misc() { var parser = new TestXmlParser(CreateRootState()); parser.Parse(@" <doc> <!DOCTYPE $ > <![CDATA[ ] $ ] ]]> <!-- <foo> <bar arg=""> $ --> </doc> ", delegate { parser.AssertStateIs <XmlDocTypeState> (); parser.AssertNodeDepth(3); parser.AssertPath("//doc/<!DOCTYPE>"); }, delegate { parser.AssertStateIs <XmlCDataState> (); parser.AssertNodeDepth(3); parser.AssertPath("//doc/<![CDATA[ ]]>"); }, delegate { parser.AssertStateIs <XmlCommentState> (); parser.AssertNodeDepth(3); parser.AssertPath("//doc/<!-- -->"); } ); parser.AssertEmpty(); parser.AssertErrorCount(0); }
public void Unclosed() { var parser = new TestXmlParser(CreateRootState()); parser.Parse(@" <doc> <tag.a> <tag.b><tag.b>$ </tag.a>$ </doc> ", delegate { parser.AssertStateIs <XmlRootState> (); parser.AssertNodeDepth(5); parser.AssertPath("//doc/tag.a/tag.b/tag.b"); }, delegate { parser.AssertStateIs <XmlRootState> (); parser.AssertNodeDepth(2); parser.AssertPath("//doc"); } ); parser.AssertEmpty(); parser.AssertErrorCount(2); }
public void IncompleteTags() { var parser = new TestXmlParser(CreateRootState()); parser.Parse(@" <doc> <tag.a att1 > <tag.b att2="" > <tag.c att3 = ' <tag.d att4 = > <tag.e att5='' att6=' att7 = > <tag.f id='$foo' /> </tag.e> </tag.d> </tag.c> </tag.b> </tag.a> </doc> ", delegate { parser.AssertStateIs <XmlAttributeValueState> (); parser.AssertNodeDepth(9); parser.AssertPath("//doc/tag.a/tag.b/tag.c/tag.d/tag.e/tag.f/@id"); } ); parser.AssertEmpty(); parser.AssertErrorCount(5, x => x.ErrorType == ErrorType.Error); }
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 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); }