예제 #1
0
        public void TreeUnexpectedTableMarkup()
        {
            //8.2.8.3 Unexpected markup in tables
            var doc = DocumentBuilder.Html(@"<table><b><tr><td>aaa</td></tr>bbb</table>ccc");

            var tree = new HTMLHtmlElement()
                       .AppendChild(new HTMLHeadElement()).ParentNode
                       .AppendChild(new HTMLBodyElement())
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }).ParentNode
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new TextNode("bbb")).ParentNode.ParentNode
                       .AppendChild(new HTMLTableElement())
                       .AppendChild(new HTMLTableSectionElement())
                       .AppendChild(new HTMLTableRowElement())
                       .AppendChild(new HTMLTableCellElement())
                       .AppendChild(new TextNode("aaa")).ParentNode.ParentNode.ParentNode.ParentNode.ParentNode
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new TextNode("ccc")).ParentNode.ParentNode.ParentNode;

            Assert.AreEqual(tree.ToHtml(), doc.DocumentElement.ToHtml());
        }
예제 #2
0
        public void TreeMisnestedTagsHeisenbergNoFurthest()
        {
            //8.2.8.1 Misnested tags: <b><i></b></i>
            var doc = DocumentBuilder.Html(@"<p>1<b>2<i>3</b>4</i>5</p>");

            var tree = new HTMLHtmlElement()
                       .AppendChild(new HTMLHeadElement()).ParentNode
                       .AppendChild(new HTMLBodyElement())
                       .AppendChild(new HTMLParagraphElement())
                       .AppendChild(new TextNode("1")).ParentNode
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new TextNode("2")).ParentNode
                       .AppendChild(new HTMLElement()
            {
                NodeName = "i"
            })
                       .AppendChild(new TextNode("3")).ParentNode.ParentNode.ParentNode
                       .AppendChild(new HTMLElement()
            {
                NodeName = "i"
            })
                       .AppendChild(new TextNode("4")).ParentNode.ParentNode
                       .AppendChild(new TextNode("5")).ParentNode.ParentNode.ParentNode;

            Assert.AreEqual(tree.ToHtml(), doc.DocumentElement.ToHtml());
        }
예제 #3
0
파일: DOM.cs 프로젝트: Rajbandi/AngleSharp
        public void HtmlHasRightBodyElement()
        {
            var doc  = new HTMLDocument();
            var root = new HTMLHtmlElement();

            doc.AppendChild(root);
            var body = new HTMLBodyElement();

            root.AppendChild(body);
            Assert.AreEqual(body, doc.Body);
        }
예제 #4
0
파일: DOM.cs 프로젝트: Rajbandi/AngleSharp
        public void HtmlHasRightHeadElement()
        {
            var doc  = new HTMLDocument();
            var root = new HTMLHtmlElement();

            doc.AppendChild(root);
            var head = new HTMLHeadElement();

            root.AppendChild(head);
            Assert.AreEqual(head, doc.Head);
        }
예제 #5
0
        public void TreeOneTextNodeTableBeforeAspaceBspaceC()
        {
            //One Text node before the table, containing "A B C" (A-space-B-space-C).
            var doc = DocumentBuilder.Html(@"A<table><tr> B</tr> C</table>");

            var tree = new HTMLHtmlElement()
                       .AppendChild(new HTMLHeadElement()).ParentNode
                       .AppendChild(new HTMLBodyElement())
                       .AppendChild(new TextNode("A B C")).ParentNode
                       .AppendChild(new HTMLTableElement())
                       .AppendChild(new HTMLTableSectionElement())
                       .AppendChild(new HTMLTableRowElement()).ParentNode.ParentNode.ParentNode.ParentNode;

            Assert.AreEqual(tree.ToHtml(), doc.DocumentElement.ToHtml());
        }
예제 #6
0
        public void TreeOneTextNodeTableBeforeAspaceBC()
        {
            //One Text node before the table, containing "A BC" (A-space-B-C), and one Text node inside the table (as a child of a tbody) with a single space character.
            var doc = DocumentBuilder.Html(@"A<table><tr> B</tr> </em>C</table>");

            var tree = new HTMLHtmlElement()
                       .AppendChild(new HTMLHeadElement()).ParentNode
                       .AppendChild(new HTMLBodyElement())
                       .AppendChild(new TextNode("A BC")).ParentNode
                       .AppendChild(new HTMLTableElement())
                       .AppendChild(new HTMLTableSectionElement())
                       .AppendChild(new HTMLTableRowElement()).ParentNode
                       .AppendChild(new TextNode(" ")).ParentNode.ParentNode.ParentNode.ParentNode;

            Assert.AreEqual(tree.ToHtml(), doc.DocumentElement.ToHtml());
        }
예제 #7
0
        public void TreeNonConformingTable()
        {
            //8.2.5.4.7 The "in body" insertion mode - "In the non-conforming ..."
            var doc = DocumentBuilder.Html(@"<a href=""a"">a<table><a href=""b"">b</table>x");

            var tree = new HTMLHtmlElement()
                       .AppendChild(new HTMLHeadElement()).ParentNode
                       .AppendChild(new HTMLBodyElement())
                       .AppendChild(new HTMLAnchorElement().SetAttribute("href", "a"))
                       .AppendChild(new TextNode("a")).ParentNode
                       .AppendChild(new HTMLAnchorElement().SetAttribute("href", "b"))
                       .AppendChild(new TextNode("b")).ParentNode.ParentNode
                       .AppendChild(new HTMLTableElement()).ParentNode.ParentNode
                       .AppendChild(new HTMLAnchorElement().SetAttribute("href", "b"))
                       .AppendChild(new TextNode("x")).ParentNode.ParentNode.ParentNode;

            Assert.AreEqual(tree.ToHtml(), doc.DocumentElement.ToHtml());
        }
예제 #8
0
        /// <summary>
        /// Applies the manifest to the given document.
        /// </summary>
        /// <param name="document">The document to modify.</param>
        public static void ApplyManifest(this Document document, HTMLHtmlElement root)
        {
            if (!document.IsInBrowsingContext)
            {
                return;
            }

            var manifest = root.Manifest;
            //TODO
            //Replace by algorithm to resolve the value of that attribute to an absolute URL,
            //relative to the newly created element.
            Predicate <String> CanResolve = str => false;

            if (!String.IsNullOrEmpty(manifest) && CanResolve(manifest))
            {
                //Run the application cache selection algorithm with the result of applying the URL serializer
                //algorithm to the resulting parsed URL with the exclude fragment flag set.
            }
            else
            {
                //Run the application cache selection algorithm with no manifest.
                //The algorithm must be passed the Document object.
            }
        }
예제 #9
0
        public void TreeUnclosedFormattingElements()
        {
            //8.2.8.6 Unclosed formatting elements
            var doc = DocumentBuilder.Html(@"<!DOCTYPE html>
<p><b class=x><b class=x><b><b class=x><b class=x><b>X<p>X<p><b><b class=x><b>X<p></b></b></b></b></b></b>X");

            var tree = new HTMLHtmlElement()
                       .AppendChild(new HTMLHeadElement()).ParentNode
                       .AppendChild(new HTMLBodyElement())
                       .AppendChild(new HTMLParagraphElement())
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new TextNode("X")).ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode
                       .AppendChild(new HTMLParagraphElement())
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new TextNode("X")).ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode
                       .AppendChild(new HTMLParagraphElement())
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            }.SetAttribute("class", "x"))
                       .AppendChild(new HTMLElement()
            {
                NodeName = "b"
            })
                       .AppendChild(new TextNode("X")).ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode
                       .AppendChild(new HTMLParagraphElement())
                       .AppendChild(new TextNode("X")).ParentNode.ParentNode.ParentNode;

            Assert.AreEqual(tree.ToHtml(), doc.DocumentElement.ToHtml());
        }
예제 #10
0
 public extern static AngularHtmlElement Angular(this HTMLHtmlElement el);