public void TestHtmlImplicitClosing () { var parser = new TestXmlParser (CreateRootState ()); parser.Parse(@" <html> <body> <li><li>$ <dt><img><dd>$</dd> <tr><tr>$</tr></li> <p> <table>$</table> <td><th><td>$ </body> </html> ", delegate { parser.AssertPath ("//html/body/li"); }, delegate { parser.AssertPath ("//html/body/li/dd"); }, delegate { parser.AssertPath ("//html/body/li/tr"); }, delegate { parser.AssertPath ("//html/body/table"); }, delegate { parser.AssertPath ("//html/body/td"); } ); parser.AssertEmpty (); parser.AssertErrorCount (1); }
public void TestAutoClosing () { var parser = new TestXmlParser (CreateRootState ()); parser.Parse (@" <html> <body> <p><img>$ <p><div> $ </div> <p> <p><a href =""http://mono-project.com/"" ><b>foo $ </a> <p> <p>$ <div><div>$</div></div> </body> </html> ", delegate { parser.AssertPath ("//html/body/p"); }, delegate { parser.AssertPath ("//html/body/div"); }, delegate { parser.AssertPath ("//html/body/p/a/b"); }, delegate { parser.AssertPath ("//html/body/p"); }, delegate { parser.AssertPath ("//html/body/div/div"); } ); parser.AssertEmpty (); parser.AssertErrorCount (1); }
public void TestHtmlImplicitClosing() { var parser = new TestXmlParser(CreateRootState()); parser.Parse(@" <html> <body> <li><li>$ <dt><img><dd>$</dd> <tr><tr>$</tr></li> <p> <table>$</table> <td><th><td>$ </body> </html> ", delegate { parser.AssertPath("//html/body/li"); }, delegate { parser.AssertPath("//html/body/li/dd"); }, delegate { parser.AssertPath("//html/body/li/tr"); }, delegate { parser.AssertPath("//html/body/table"); }, delegate { parser.AssertPath("//html/body/td"); } ); parser.AssertEmpty(); parser.AssertErrorCount(1); }
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 TestAutoClosing() { var parser = new TestXmlParser(CreateRootState()); parser.Parse(@" <html> <body> <p><img>$ <p><div> $ </div> <p> <p><a href =""http://mono-project.com/"" ><b>foo $ </a> <p> <p>$ <div><div>$</div></div> </body> </html> ", delegate { parser.AssertPath("//html/body/p"); }, delegate { parser.AssertPath("//html/body/div"); }, delegate { parser.AssertPath("//html/body/p/a/b"); }, delegate { parser.AssertPath("//html/body/p"); }, delegate { parser.AssertPath("//html/body/div/div"); } ); parser.AssertEmpty(); parser.AssertErrorCount(1); }
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 DocTypeCapture () { var parser = new TestXmlParser (CreateRootState (), true); parser.Parse (@" <!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN"" ""DTD/xhtml1-strict.dtd"" [ <!-- foo --> <!bar #baz> ]> <doc><foo/></doc>"); parser.AssertEmpty (); XDocument doc = (XDocument)parser.Nodes.Peek (); Assert.IsTrue (doc.FirstChild is XDocType); XDocType dt = (XDocType) doc.FirstChild; Assert.AreEqual ("html", dt.RootElement.FullName); Assert.AreEqual ("-//W3C//DTD XHTML 1.0 Strict//EN", dt.PublicFpi); Assert.AreEqual ("DTD/xhtml1-strict.dtd", dt.Uri); Assert.AreEqual (dt.InternalDeclarationRegion.Begin.Line, 4); Assert.AreEqual (dt.InternalDeclarationRegion.End.Line, 7); parser.AssertNoErrors (); }
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 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 BadClosingTag () { var parser = new TestXmlParser (CreateRootState ()); parser.Parse (@"<doc><x><abc></ab c><cd></cd></x></doc>"); parser.AssertEmpty (); parser.AssertErrorCount (2); }
public void ClosingTagWithWhitespace () { var parser = new TestXmlParser (CreateRootState ()); parser.Parse (@"<doc><a></ a></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); }