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);
        }
示例#5
0
        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);
		}
示例#13
0
        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);
        }
示例#15
0
		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);
        }
示例#20
0
        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);
        }
示例#29
0
        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);
        }