@Override public boolean deepEquals(Node node) { if (this == node) { return true; } if (!(node instanceof Document)) { return false; } final Document other = (Document) node; if (getChildrenCount() == other.getChildrenCount()) { for (int index = 0; index < getChildrenCount(); index++) { if (!getChildAt(index).deepEquals(other.getChildAt(index))) { return false; } } } else { return false; } return true; }
@Test public void testFeaturesComments() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><!--comment--><root><child/></root>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n <!--comment--> <root> \n <child/> \n </root>", (doc) -> { assertEquals(2, doc.getChildrenCount()); assertEquals(1, doc.getChildrenCount(Comment.class)); }, Feature.LOAD_COMMENTS); }
@Test public void testFeaturesCommentsMixed1() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><!--comment--><root> aaa\n aaa<child/> aaa\n aaa</root>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!--comment--><root> aaa\n aaa<child/> aaa\n aaa</root>", (doc) -> { assertEquals(2, doc.getChildrenCount()); assertEquals(1, doc.getChildrenCount(Comment.class)); assertEquals(3, doc.getRootElement().getChildrenCount()); assertEquals(2, doc.getRootElement().getChildrenCount(Text.class)); }, Feature.LOAD_COMMENTS, Feature.LOAD_SPACES, Feature.ALLOW_MIXED_CONTENT); }
@Test public void testFeaturesCommentsMixed2() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><!--comment--><root>aaa\naaa<child/>aaa\naaa</root>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--comment--><root>aaa\naaa<child/>aaa\naaa</root>", (doc) -> { Nodes.print(doc, LOGGER, Level.DEBUG); assertEquals(2, doc.getChildrenCount()); assertEquals(1, doc.getChildrenCount(Comment.class)); assertEquals(3, doc.getRootElement().getChildrenCount()); assertEquals(2, doc.getRootElement().getChildrenCount(Text.class)); }, Feature.LOAD_COMMENTS, Feature.LOAD_SPACES, Feature.ALLOW_MIXED_CONTENT); } }
@Test public void testFeaturesDefault0() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root/>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!-- comment --><root/><!-- comment -->", (doc) -> { assertEquals(1, doc.getChildrenCount()); assertEquals("root", doc.getRootElement().getName()); assertEquals(0, doc.getRootElement().getChildrenCount()); }); }
@Test public void testFeaturesDefault3() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root>aaa</root>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!-- comment --><root><!-- comment -->aaa</root><!-- comment -->", (doc) -> { assertEquals(1, doc.getChildrenCount()); assertEquals("root", doc.getRootElement().getName()); assertEquals(1, doc.getRootElement().getChildrenCount()); }); }
@Test public void testFeaturesDefault6() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><child/></root>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><child/></root>", (doc) -> { assertEquals(1, doc.getChildrenCount()); assertEquals("root", doc.getRootElement().getName()); assertEquals(1, doc.getRootElement().getChildrenCount()); }); }
@Test public void testFeaturesDefault1() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root/>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!-- comment --><root></root><!-- comment -->", (doc) -> { assertEquals(1, doc.getChildrenCount()); assertEquals("root", doc.getRootElement().getName()); assertEquals(0, doc.getRootElement().getChildrenCount()); }); }
@Test public void testFeaturesDefault2() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root> </root>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!-- comment --><root> <!-- comment --> </root><!-- comment -->", (doc) -> { assertEquals(1, doc.getChildrenCount()); assertEquals("root", doc.getRootElement().getName()); assertEquals(1, doc.getRootElement().getChildrenCount()); }); }
@Test public void testFeaturesDefault7() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><child/></root>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n <root> \n <child/> \n </root>", (doc) -> { assertEquals(1, doc.getChildrenCount()); assertEquals("root", doc.getRootElement().getName()); assertEquals(1, doc.getRootElement().getChildrenCount()); }); }
@Test public void testContructors() { final Document doc = new Document(); assertEquals(doc, doc.getDocument()); assertEquals(null, doc.getRootElement()); assertEquals(0, doc.getChildrenCount()); assertTrue(doc.deepEquals(doc)); assertEquals(null, doc.getLastChild()); }
@Test public void testFeaturesDefault4() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><child> </child></root>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n <root> \n <child> </child> \n </root>", (doc) -> { assertEquals(1, doc.getChildrenCount()); assertEquals("root", doc.getRootElement().getName()); assertEquals(1, doc.getRootElement().getChildrenCount()); assertEquals(1, doc.getRootElement().getChildAt(Element.class, 0).getChildrenCount()); }); }
@Test public void testFeaturesDefault5() throws IOException { test("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><child/></root>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n <root> \n <child></child> \n </root>", (doc) -> { assertEquals(1, doc.getChildrenCount()); assertEquals("root", doc.getRootElement().getName()); assertEquals(1, doc.getRootElement().getChildrenCount()); assertEquals(0, doc.getRootElement().getChildAt(Element.class, 0).getChildrenCount()); }); }
@Test public void testDeepEquals() { final Document doc1 = new Document(); final Document doc2 = new Document(); assertTrue(doc1.deepEquals(doc2)); doc1.addChild(new Comment()); assertFalse(doc1.deepEquals(doc2)); doc2.addChild(new Comment()); assertTrue(doc1.deepEquals(doc2)); doc1.addChild(new Element(NAME)); assertFalse(doc1.deepEquals(doc2)); doc2.addChild(new Element(NAME)); assertTrue(doc1.deepEquals(doc2)); ((Element) doc1.getLastChild()).addAttribute(NAME, VALUE); assertFalse(doc1.deepEquals(doc2)); ((Element) doc2.getLastChild()).addAttribute(NAME, VALUE); assertTrue(doc1.deepEquals(doc2)); final Document doc3 = doc1.clone(true); assertTrue(doc1.deepEquals(doc3)); doc3.removeChildren(); assertEquals(0, doc3.getChildrenCount()); }