// public void testProblemsReporting() throws ParseException { // HtmlParseResult result = parse("<!DOCTYPE html></section>"); // // 012345678901234567890123456789 // // 0 1 2 // Collection<ProblemDescription> problems = result.getProblems(); // // assertEquals(1, problems.size()); // ProblemDescription p = problems.iterator().next(); // // assertEquals(ProblemDescription.ERROR, p.getType()); // assertEquals("nokey", p.getKey()); //XXX fix that // assertEquals("Stray end tag “section”.", p.getText()); // assertEquals(15, p.getFrom()); // assertEquals(25, p.getTo()); // // } public void testStyle() throws ParseException { String code = "<!DOCTYPE html>\n<style type=\"text/css\">\n@import \"resources2/ezcompik/newcss2moje.css\";\n</style>\n"; // 0123456789012345 67890123456 7890123456 789 012345678 90123456789012345678 // 90123456789012 345678901 23456789 // 0 1 2 3 4 5 6 7 // 8 9 // NodeTreeBuilder.DEBUG = true; // NodeTreeBuilder.DEBUG_STATES = true; HtmlParseResult result = parse(code); Node root = result.root(); assertNotNull(root); // NodeUtils.dumpTree(result.root()); OpenTag head = ElementUtils.query(root, "html/head"); assertNotNull(head); assertEquals(2, head.children().size()); Iterator<Element> itr = head.children().iterator(); OpenTag styleOpenTag = (OpenTag) itr.next(); assertNotNull(styleOpenTag); assertEquals(16, styleOpenTag.from()); assertEquals(39, styleOpenTag.to()); Element styleEndTag = itr.next(); assertNotNull(styleEndTag); assertEquals(87, styleEndTag.from()); assertEquals(95, styleEndTag.to()); assertSame(styleEndTag, styleOpenTag.matchingCloseTag()); }
public void testParseUnfinishedCode() throws ParseException { String code = "<!DOCTYPE HTML>" + "<html>" + "<head>" + "<title>" + "</title>" + "</head>" + "<body>" + "</table>" + "</html>"; HtmlParseResult result = parse(code); Node root = result.root(); assertNotNull(root); // NodeUtils.dumpTree(root); Node html = ElementUtils.query(root, "html"); assertNotNull(html); Collection<Element> children = html.children(); assertEquals(4, children.size()); // <head>, </head>,<body>,</table> Iterator<Element> childernItr = children.iterator(); assertTrue(childernItr.hasNext()); Element child = childernItr.next(); assertEquals(ElementType.OPEN_TAG, child.type()); assertEquals("head", ((OpenTag) child).name().toString()); assertTrue(childernItr.hasNext()); child = childernItr.next(); assertEquals(ElementType.CLOSE_TAG, child.type()); assertEquals("head", ((CloseTag) child).name().toString()); assertTrue(childernItr.hasNext()); child = childernItr.next(); assertEquals(ElementType.OPEN_TAG, child.type()); assertEquals("body", ((OpenTag) child).name().toString()); assertTrue(childernItr.hasNext()); child = childernItr.next(); assertEquals(ElementType.CLOSE_TAG, child.type()); assertEquals("table", ((CloseTag) child).name().toString()); // NodeUtils.dumpTree(root); }