package org.jdom2.test.cases.output; import static org.junit.Assert.assertTrue; import java.io.IOException; import org.junit.Test; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; import org.jdom2.output.XMLOutputter; import org.jdom2.test.util.FidoFetch; import org.jdom2.test.util.UnitTestUtil; @SuppressWarnings("javadoc") public abstract class AbstractTestRoundTrip { abstract Document roundTrip(Document doc); abstract Document prepare(Document doc); private final void checkRoundTrip(final Document indoc) { final Document doc = prepare(indoc); final Document rtdoc = roundTrip(doc); assertTrue(rtdoc != null); try { XMLOutputter xout = new XMLOutputter(); System.out.println("Compare from:\n"); xout.output(doc, System.out); System.out.println("Compare to:\n"); xout.output(rtdoc, System.out); System.out.println("\n\n"); } catch (IOException ioe) { // swallow } UnitTestUtil.compare(doc, rtdoc); } @Test public void testBasic() { Document doc = new Document(new Element("root")); checkRoundTrip(doc); } @Test public void testDefaultNamespace() { Element emt = new Element("root", "ns:1"); emt.addContent(new Element("child")); // note, no namespace. Document doc = new Document(emt); checkRoundTrip(doc); } @Test public void testSimple() throws JDOMException, IOException { final SAXBuilder sb = new SAXBuilder(); final Document doc = sb.build(FidoFetch.getFido().getURL("/DOMBuilder/simple.xml")); doc.setBaseURI(null); checkRoundTrip(doc); } @Test public void testNamespaces() throws JDOMException, IOException { final SAXBuilder sb = new SAXBuilder(); final Document doc = sb.build(FidoFetch.getFido().getURL("/DOMBuilder/namespaces.xml")); doc.setBaseURI(null); checkRoundTrip(doc); } @Test public void testComplex() throws JDOMException, IOException { final SAXBuilder sb = new SAXBuilder(); final Document doc = sb.build(FidoFetch.getFido().getURL("/DOMBuilder/complex.xml")); doc.setBaseURI(null); checkRoundTrip(doc); } }