public void DivAndInvalidDiv() { string html = "<div>test1</div><div>test2"; HtmlParser parser = new HtmlTextParser(html); if (parser.Traverse()) { Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "test1", "<div>test1</div>"); } else { Assert.Fail("Fail to traverse"); } if (parser.Traverse()) { Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "test2", "<div>test2"); } else { Assert.Fail("Fail to traverse"); } Assert.AreEqual(parser.Traverse(), false); }
public void DivInsidePWithUpperCaseClose() { string html = "<div><p></P></DIV>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "<p></P>", html); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(true, parser.Current.HasChildren); Assert.AreEqual(1, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "p", "", "<p></P>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.AreEqual(parser.Traverse(), false); Assert.IsNull(parser.Current); }
public void BrWithNoSpaceAndSpan() { string html = @"<br/><span>1</span>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "br", "<br/>", "<br/>"); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(true, parser.Current.SelfClosing); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "span", "1", "<span>1</span>"); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(1, parser.Current.Children.Count()); Assert.AreEqual(true, parser.Current.HasChildren); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "#text", "1", "1"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).HasChildren); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).SelfClosing); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void DivInsideOneDiv() { string html = "<div><div>test2</div></div>"; HtmlParser parser = new HtmlTextParser(html); if (parser.Traverse()) { Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "<div>test2</div>", "<div><div>test2</div></div>"); Assert.IsNull(parser.Current.Parent); Assert.IsNotNull(parser.Current.Children); Assert.AreEqual(parser.Current.Children.Count(), 1); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); IHtmlNode node = parser.Current.Children.ElementAt(0); Assert.IsNotNull(node.Parent); TestUtility.AreEqual(node, "div", "test2", "<div>test2</div>"); } else { Assert.Fail("Fail to traverse"); } Assert.AreEqual(parser.Traverse(), false); }
public void TableWithOneRowAndTwoColumn() { string html = "<table><tr><td>1</td><td></td></tr></table>"; HtmlTextParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "table", "<tr><td>1</td><td></td></tr>", "<table><tr><td>1</td><td></td></tr></table>"); Assert.IsNull(parser.Current.Parent); Assert.IsNotNull(parser.Current.Children); Assert.AreEqual(1, parser.Current.Children.Count()); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "tr", "<td>1</td><td></td>", "<tr><td>1</td><td></td></tr>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current.Children.ElementAt(0).Parent, parser.Current); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children); Assert.AreEqual(2, parser.Current.Children.ElementAt(0).Children.Count()); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(0), "td", "1", "<td>1</td>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Parent, parser.Current.Children.ElementAt(0)); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(1)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(1), "td", "", "<td></td>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(1).Parent); Assert.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(1).Parent, parser.Current.Children.ElementAt(0)); Assert.AreEqual(parser.Traverse(), false); Assert.IsNull(parser.Current); }
public void DivP() { string html = "<div><p></div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "<p>", "<div><p></div>"); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(1, parser.Current.Children.Count()); Assert.AreEqual(true, parser.Current.HasChildren); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "p", "", "<p>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).SelfClosing); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void OneDivTextNext() { string html = "<div>this is a div</div>test<span>this is a span</span>"; HtmlParser parser = new HtmlTextParser(html); if (parser.Traverse()) { Assert.IsNotNull(parser.Current); if (parser.Current != null) { Assert.AreEqual("div", parser.Current.Tag); Assert.AreEqual("<div>this is a div</div>", parser.Current.Html); Assert.AreEqual("this is a div", parser.Current.InnerHtml); } } else { Assert.Fail("Fail to traverse"); } if (parser.Traverse()) { Assert.IsNotNull(parser.Current); if (parser.Current != null) { Assert.AreEqual("#text", parser.Current.Tag); Assert.AreEqual("test", parser.Current.Html); Assert.AreEqual("test", parser.Current.InnerHtml); } } else { Assert.Fail("Fail to traverse"); } if (parser.Traverse()) { Assert.IsNotNull(parser.Current); if (parser.Current != null) { Assert.AreEqual("span", parser.Current.Tag); Assert.AreEqual("<span>this is a span</span>", parser.Current.Html); Assert.AreEqual("this is a span", parser.Current.InnerHtml); } } else { Assert.Fail("Fail to traverse"); } Assert.AreEqual(parser.Traverse(), false); }
public void SingleNode() { string html = "<div>test</div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "test", html); Assert.IsNull(parser.Current.Previous); Assert.IsNull(parser.Current.Next); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void DivPDivSpan() { string html = "<div><p>t1</p></div><div><span>t2</span></div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(parser.Traverse(), true); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "<p>t1</p>", "<div><p>t1</p></div>"); Assert.IsNull(parser.Current.Parent); Assert.IsNotNull(parser.Current.Children); Assert.AreEqual(1, parser.Current.Children.Count()); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "p", "t1", "<p>t1</p>"); Assert.AreEqual(parser.Traverse(), true); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "<span>t2</span>", "<div><span>t2</span></div>"); Assert.IsNull(parser.Current.Parent); Assert.IsNotNull(parser.Current.Children); Assert.AreEqual(parser.Current.Children.Count(), 1); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "span", "t2", "<span>t2</span>"); Assert.AreEqual(parser.Traverse(), false); Assert.IsNull(parser.Current); }
public void DivInsideTextA() { string html = "<div>test<a>ano</a></div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "test<a>ano</a>", "<div>test<a>ano</a></div>"); Assert.IsNull(parser.Current.Previous); Assert.IsNull(parser.Current.Next); Assert.AreEqual(2, parser.Current.Children.Count()); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "#text", "test", "test"); Assert.IsNull(parser.Current.Children.ElementAt(0).Previous); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Next); Assert.AreEqual(parser.Current.Children.ElementAt(0).Next, parser.Current.Children.ElementAt(1)); Assert.IsNotNull(parser.Current.Children.ElementAt(1)); TestUtility.AreEqual(parser.Current.Children.ElementAt(1), "a", "ano", "<a>ano</a>"); Assert.IsNull(parser.Current.Children.ElementAt(1).Next); Assert.IsNotNull(parser.Current.Children.ElementAt(1).Previous); Assert.AreEqual(parser.Current.Children.ElementAt(1).Previous, parser.Current.Children.ElementAt(0)); }
public void BrOnlyNoSpace() { string html = @"<br/>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "br", "<br/>", "<br/>"); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(true, parser.Current.SelfClosing); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void MetaTag() { string html = "<html><head><meta charset=\"utf-8\" /></head><body></body></html>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "html", "<head><meta charset=\"utf-8\" /></head><body></body>", html); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(true, parser.Current.HasChildren); Assert.AreEqual(2, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "head", "<meta charset=\"utf-8\" />", "<head><meta charset=\"utf-8\" /></head>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(true, parser.Current.Children.ElementAt(0).HasChildren); Assert.AreEqual(1, parser.Current.Children.ElementAt(0).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(0), "meta", "<meta charset=\"utf-8\" />", "<meta charset=\"utf-8\" />"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current.Children.ElementAt(0), parser.Current.Children.ElementAt(0).Children.ElementAt(0).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).Children.ElementAt(0).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(0).Children.ElementAt(0).SelfClosing); Assert.AreEqual(1, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Attributes.Count); TestUtility.CheckKeyValuePair(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Attributes.ElementAt(0), "charset", "utf-8"); Assert.IsNotNull(parser.Current.Children.ElementAt(1)); TestUtility.AreEqual(parser.Current.Children.ElementAt(1), "body", "", "<body></body>"); Assert.IsNotNull(parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(1).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(1).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(1).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(1).Attributes.Count); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void CommentWithDiv() { string html = "<!--<div>test</div>-->"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "#comment", html, html); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void DivWithUpperCaseOpen() { string html = "<DIV></div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "DIV", "", html); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.AreEqual(parser.Traverse(), false); Assert.IsNull(parser.Current); }
public void TestTextOnly() { string html = "this is a test"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "#text", "this is a test", "this is a test"); Assert.AreEqual(true, parser.Current.IsText); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(parser.Traverse(), false); }
public void DivPSpanTextInvalidSpanOpen() { string html = "<div><p><span>test<span></p></div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "<p><span>test<span></p>", html); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(1, parser.Current.Children.Count()); Assert.AreEqual(true, parser.Current.HasChildren); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "p", "<span>test<span>", "<p><span>test<span></p>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(1, parser.Current.Children.ElementAt(0).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(0).HasChildren); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(0), "span", "test<span>", "<span>test<span>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current.Children.ElementAt(0), parser.Current.Children.ElementAt(0).Children.ElementAt(0).Parent); Assert.AreEqual(2, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(0).Children.ElementAt(0).HasChildren); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).Children.ElementAt(0).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(0), "#text", "test", "test"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(0), parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(0).Parent); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(0).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(0).HasChildren); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(0).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(0).Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(1)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(1), "span", "", "<span>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(1).Parent); Assert.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(0), parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(1).Parent); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(1).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(1).HasChildren); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(1).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.ElementAt(1).Attributes.Count); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void KeyOnlyWithEqual() { string html = "<div id=></div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "", "<div id=></div>"); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.HasChildren); Assert.IsNotNull(parser.Current.Attributes); Assert.AreEqual(1, parser.Current.Attributes.Count); TestUtility.CheckKeyValuePair(parser.Current.Attributes.ElementAt(0), "id", ""); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void DivA() { string html = "<div>test</div><a>ano</a>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "test", "<div>test</div>"); Assert.IsNull(parser.Current.Previous); Assert.IsNull(parser.Current.Next); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "a", "ano", "<a>ano</a>"); Assert.IsNotNull(parser.Current.Previous); Assert.IsNull(parser.Current.Next); TestUtility.AreEqual(parser.Current.Previous, "div", "test", "<div>test</div>"); Assert.IsNotNull(parser.Current.Previous.Next); TestUtility.AreEqual(parser.Current.Previous.Next, "a", "ano", "<a>ano</a>"); }
public void OneDivStartWithSpace() { string html = " <div>test</div>"; HtmlParser parser = new HtmlTextParser(html); if (parser.Traverse()) { Assert.IsNotNull(parser.Current); if (parser.Current != null) { Assert.AreEqual("#text", parser.Current.Tag); Assert.AreEqual(" ", parser.Current.Html); Assert.AreEqual(" ", parser.Current.InnerHtml); } } else { Assert.Fail("Fail to traverse"); } if (parser.Traverse()) { Assert.IsNotNull(parser.Current); if (parser.Current != null) { Assert.AreEqual("div", parser.Current.Tag); Assert.AreEqual("<div>test</div>", parser.Current.Html); Assert.AreEqual("test", parser.Current.InnerHtml); } } else { Assert.Fail("Fail to traverse"); } Assert.AreEqual(parser.Traverse(), false); }
public void CommentNextDiv() { string html = "<!--test--><div>test</div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "#comment", "<!--test-->", "<!--test-->"); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AnalyzeNode(parser.Current, "div", "test", "<div>test</div>", null, false, true, 1, 0); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void InvalidDivAndDiv() { string html = "<div>test2<div>test1</div>"; HtmlParser parser = new HtmlTextParser(html); if (parser.Traverse()) { Assert.IsNotNull(parser.Current); if (parser.Current != null) { TestUtility.AreEqual(parser.Current, "div", "test2<div>test1</div>", "<div>test2<div>test1</div>"); Assert.IsNull(parser.Current.Parent); Assert.IsNotNull(parser.Current.Children); Assert.AreEqual(2, parser.Current.Children.Count()); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "#text", "test2", "test2"); } } else { Assert.Fail("Fail to traverse"); } Assert.AreEqual(parser.Traverse(), false); }
public void LinkSelfAndCloseTag() { string html = "<head><link href=\"/favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\" /><link href=\"/favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\"></link></head>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "head", "<link href=\"/favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\" /><link href=\"/favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\"></link>", html); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(true, parser.Current.HasChildren); Assert.AreEqual(2, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "link", "<link href=\"/favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\" />", "<link href=\"/favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\" />"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(0).SelfClosing); Assert.AreEqual(3, parser.Current.Children.ElementAt(0).Attributes.Count); TestUtility.CheckKeyValuePair(parser.Current.Children.ElementAt(0).Attributes.ElementAt(0), "href", "/favicon.ico"); TestUtility.CheckKeyValuePair(parser.Current.Children.ElementAt(0).Attributes.ElementAt(1), "rel", "shortcut icon"); TestUtility.CheckKeyValuePair(parser.Current.Children.ElementAt(0).Attributes.ElementAt(2), "type", "image/x-icon"); Assert.IsNotNull(parser.Current.Children.ElementAt(1)); TestUtility.AreEqual(parser.Current.Children.ElementAt(1), "link", "<link href=\"/favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\">", "<link href=\"/favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\">"); Assert.IsNotNull(parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(1).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(1).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(1).SelfClosing); Assert.AreEqual(3, parser.Current.Children.ElementAt(1).Attributes.Count); TestUtility.CheckKeyValuePair(parser.Current.Children.ElementAt(1).Attributes.ElementAt(0), "href", "/favicon.ico"); TestUtility.CheckKeyValuePair(parser.Current.Children.ElementAt(1).Attributes.ElementAt(1), "rel", "shortcut icon"); TestUtility.CheckKeyValuePair(parser.Current.Children.ElementAt(1).Attributes.ElementAt(2), "type", "image/x-icon"); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void ImgAndBrWithSelfCloseInsideDivWithSpaceInBetween() { string html = "<div> <img /> <br /> </div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", " <img /> <br /> ", html); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(true, parser.Current.HasChildren); Assert.AreEqual(5, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "#text", " ", " "); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(1)); TestUtility.AreEqual(parser.Current.Children.ElementAt(1), "img", "<img />", "<img />"); Assert.IsNotNull(parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(1).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(1).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(1).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(1).Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(2)); TestUtility.AreEqual(parser.Current.Children.ElementAt(2), "#text", " ", " "); Assert.IsNotNull(parser.Current.Children.ElementAt(2).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(2).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(2).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(2).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(2).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(2).Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(3)); TestUtility.AreEqual(parser.Current.Children.ElementAt(3), "br", "<br />", "<br />"); Assert.IsNotNull(parser.Current.Children.ElementAt(3).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(3).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(3).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(3).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(3).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(3).Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(4)); TestUtility.AreEqual(parser.Current.Children.ElementAt(4), "#text", " ", " "); Assert.IsNotNull(parser.Current.Children.ElementAt(4).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(4).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(4).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(4).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(4).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(4).Attributes.Count); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void ImgAndBrWithIdInsideDiv() { string html = "<div id='dv'><img id='im'><br id='b'></div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "<img id='im'><br id='b'>", html); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(true, parser.Current.HasChildren); Assert.AreEqual(2, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(1, parser.Current.Attributes.Count); TestUtility.CheckKeyValuePair(parser.Current.Attributes.ElementAt(0), "id", "dv"); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "img", "<img id='im'>", "<img id='im'>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(0).SelfClosing); Assert.AreEqual(1, parser.Current.Children.ElementAt(0).Attributes.Count); TestUtility.CheckKeyValuePair(parser.Current.Children.ElementAt(0).Attributes.ElementAt(0), "id", "im"); Assert.IsNotNull(parser.Current.Children.ElementAt(1)); TestUtility.AreEqual(parser.Current.Children.ElementAt(1), "br", "<br id='b'>", "<br id='b'>"); Assert.IsNotNull(parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(1).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(1).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(1).SelfClosing); Assert.AreEqual(1, parser.Current.Children.ElementAt(1).Attributes.Count); TestUtility.CheckKeyValuePair(parser.Current.Children.ElementAt(1).Attributes.ElementAt(0), "id", "b"); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void ImgWithIdAndSrc() { string html = "<img id=\"img\" src=\"http://google.com/1.jpg\">"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "img", html, html); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(true, parser.Current.SelfClosing); Assert.AreEqual(2, parser.Current.Attributes.Count); TestUtility.CheckKeyValuePair(parser.Current.Attributes.ElementAt(0), "id", "img"); TestUtility.CheckKeyValuePair(parser.Current.Attributes.ElementAt(1), "src", "http://google.com/1.jpg"); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void ImgAndBrInsideDiv() { string html = "<div><img><br></div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "<img><br>", html); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(true, parser.Current.HasChildren); Assert.AreEqual(2, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "img", "<img>", "<img>"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(0).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Attributes.Count); Assert.IsNotNull(parser.Current.Children.ElementAt(1)); TestUtility.AreEqual(parser.Current.Children.ElementAt(1), "br", "<br>", "<br>"); Assert.IsNotNull(parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(1).HasChildren); Assert.AreEqual(0, parser.Current.Children.ElementAt(1).Children.Count()); Assert.AreEqual(true, parser.Current.Children.ElementAt(1).SelfClosing); Assert.AreEqual(0, parser.Current.Children.ElementAt(1).Attributes.Count); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void SpaceBr() { string html = " <br>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "#text", " ", " "); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "br", "<br>", "<br>"); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(true, parser.Current.SelfClosing); Assert.AreEqual(0, parser.Current.Attributes.Count); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void OneCharAndSpaceInsideDivAndBr() { string html = @"<div><br /> t</div>"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "div", "<br /> t", "<div><br /> t</div>"); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(2, parser.Current.Children.Count()); Assert.AreEqual(true, parser.Current.HasChildren); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "br", "<br />", "<br />"); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Parent); Assert.AreEqual(0, parser.Current.Children.ElementAt(0).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(0).HasChildren); Assert.AreEqual(true, parser.Current.Children.ElementAt(0).SelfClosing); Assert.IsNotNull(parser.Current.Children.ElementAt(1)); TestUtility.AreEqual(parser.Current.Children.ElementAt(1), "#text", " t", " t"); Assert.AreEqual(0, parser.Current.Children.ElementAt(1).Children.Count()); Assert.AreEqual(false, parser.Current.Children.ElementAt(1).HasChildren); Assert.IsNotNull(parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(1).Parent); Assert.AreEqual(false, parser.Current.Children.ElementAt(1).SelfClosing); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }
public void OneCellWithSpanText() { string html = "<table><tr><td><span>s1</span>test</td></tr></table>"; HtmlTextParser parser = new HtmlTextParser(html); Assert.AreEqual(parser.Traverse(), true); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "table", "<tr><td><span>s1</span>test</td></tr>", html); Assert.IsNotNull(parser.Current.Children); Assert.AreEqual(1, parser.Current.Children.Count()); Assert.IsNotNull(parser.Current.Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0), "tr", "<td><span>s1</span>test</td>", "<tr><td><span>s1</span>test</td></tr>"); Assert.AreEqual(parser.Current, parser.Current.Children.ElementAt(0).Parent); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children); Assert.AreEqual(1, parser.Current.Children.ElementAt(0).Children.Count()); Assert.IsNotNull(parser.Current.Children.ElementAt(0).Children.ElementAt(0)); TestUtility.AreEqual(parser.Current.Children.ElementAt(0).Children.ElementAt(0), "td", "<span>s1</span>test", "<td><span>s1</span>test</td>"); Assert.AreEqual(parser.Current.Children.ElementAt(0), parser.Current.Children.ElementAt(0).Children.ElementAt(0).Parent); Assert.AreEqual(2, parser.Current.Children.ElementAt(0).Children.ElementAt(0).Children.Count()); }
public void TextWithRightPaddingAndBr() { string html = @"test <br />"; HtmlParser parser = new HtmlTextParser(html); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "#text", "test ", "test "); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.SelfClosing); Assert.AreEqual(true, parser.Traverse()); Assert.IsNotNull(parser.Current); TestUtility.AreEqual(parser.Current, "br", "<br />", "<br />"); Assert.IsNull(parser.Current.Parent); Assert.AreEqual(0, parser.Current.Children.Count()); Assert.AreEqual(false, parser.Current.HasChildren); Assert.AreEqual(true, parser.Current.SelfClosing); Assert.AreEqual(false, parser.Traverse()); Assert.IsNull(parser.Current); }