@Test void testDecodingQuotes() throws IOException { String html = read("decode.html", false); LagartoDOMBuilder lagartoDOMBuilder = new LagartoDOMBuilder(); Document doc = lagartoDOMBuilder.parse(html); Element td1 = (Element) doc.getChild(0, 1, 1, 1, 1); String td1attr = td1.getAttribute("onclick"); Element td2 = (Element) doc.getChild(0, 1, 1, 3, 1); String td2attr = td2.getAttribute("onclick"); html = html(doc); String out = read("decode-out.html", true); assertEquals(out, html); // now re-parse the generated html String newHtml = doc.getHtml(); lagartoDOMBuilder = new LagartoDOMBuilder(); doc = lagartoDOMBuilder.parse(newHtml); td1 = (Element) doc.getChild(0, 1, 1, 1, 1); assertEquals(td1attr, td1.getAttribute("onclick")); td2 = (Element) doc.getChild(0, 1, 1, 3, 1); assertEquals(td2attr, td2.getAttribute("onclick")); }
@Test void testWhitespaces() throws IOException { String xmlContent = "<foo> <!--c--> <bar> </bar> <x/> </foo>"; LagartoDOMBuilder lagartoDOMBuilder = new LagartoDOMBuilder(); lagartoDOMBuilder.enableXmlMode(); lagartoDOMBuilder.getConfig().setSelfCloseVoidTags(true); Document doc = lagartoDOMBuilder.parse(xmlContent); assertEquals(1, doc.getChildNodesCount()); Element foo = (Element) doc.getChild(0); assertEquals("foo", foo.getNodeName()); assertEquals(3, foo.getChildNodesCount()); Element bar = (Element) foo.getChild(1); assertEquals("bar", bar.getNodeName()); assertEquals(1, bar.getChildNodesCount()); // must be 1 as whitespaces are between open/closed tag assertEquals("<foo><!--c--><bar> </bar><x/></foo>", doc.getHtml()); assertTrue(doc.check()); }
@Test void testPeopleXml() throws IOException { File file = new File(testDataRoot, "people.xml"); String xmlContent = FileUtil.readString(file); LagartoDOMBuilder lagartoDOMBuilder = new LagartoDOMBuilder(); lagartoDOMBuilder.enableXmlMode(); Document doc = lagartoDOMBuilder.parse(xmlContent); assertEquals(2, doc.getChildNodesCount()); // not 3! XmlDeclaration xml = (XmlDeclaration) doc.getFirstChild(); assertEquals(0, xml.getAttributesCount()); Element peopleList = (Element) doc.getChild(1); assertEquals(1, peopleList.getChildNodesCount()); Element person = peopleList.getFirstChildElement(); assertEquals(3, person.getChildNodesCount()); Element name = (Element) person.getChild(0); assertEquals("Fred Bloggs", name.getTextContent()); assertEquals("Male", person.getChild(2).getTextContent()); xmlContent = StringUtil.removeChars(xmlContent, "\n\r\t"); assertEquals(xmlContent, doc.getHtml()); assertTrue(doc.check()); }
@Test void testClone() { String page = "<html><body><p id=\"w173\">Hello<br>Jodd</p></body></html>"; Document root = new LagartoDOMBuilder().parse(page); String generated = root.getHtml(); assertEquals(page, generated); Document rootClone = root.clone(); String generated2 = rootClone.getHtml(); assertEquals(page, generated2); assertNotSame(root, rootClone); assertNotSame(root.getChild(0), rootClone.getChild(0)); assertTrue(root.check()); }
@Test void testXmlAndSingleQuotes() throws IOException { File file = new File(testDataRoot, "people2.xml"); String xmlContent = FileUtil.readString(file); LagartoDOMBuilder lagartoDOMBuilder = new LagartoDOMBuilder(); lagartoDOMBuilder.enableXmlMode(); Document xml = lagartoDOMBuilder.parse(xmlContent); XmlDeclaration xmlDeclaration = (XmlDeclaration) xml.getChild(0); assertEquals("1.0", xmlDeclaration.getVersion()); assertEquals("UTF-8", xmlDeclaration.getEncoding()); } }
@Test void testNamespaces() throws IOException { File file = new File(testDataRoot, "namespace.xml"); LagartoDOMBuilder lagartoDOMBuilder = new LagartoDOMBuilder(); lagartoDOMBuilder.enableXmlMode(); lagartoDOMBuilder.getConfig().setCalculatePosition(true); Document doc = lagartoDOMBuilder.parse(FileUtil.readString(file)); assertTrue(doc.check()); Element cfgTestElement = (Element) doc.getChild(1); assertEquals("cfg:test", cfgTestElement.getNodeName()); Element cfgNode = (Element) cfgTestElement.getChild(0); assertEquals("cfg:node", cfgNode.getNodeName()); Jerry.JerryParser jerryParser = new Jerry.JerryParser(); ((LagartoDOMBuilder) jerryParser.getDOMBuilder()).enableXmlMode(); Jerry jerry = jerryParser.parse(FileUtil.readString(file)); final StringBuilder result = new StringBuilder(); jerry.$("cfg\\:test").each(($this, index) -> { result.append($this.$("cfg\\:node").text()); return true; }); assertEquals("This is a text", result.toString()); }