// XmlUtilTest.java package org.milyn.xml; import org.junit.Test; import static org.junit.Assert.*; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; import org.milyn.io.StreamUtils; import org.w3c.dom.Document; import org.xml.sax.SAXException; import javax.xml.transform.dom.DOMResult; /** * XmlUtilTest * <p> * Relations: XmlUtil extends java.lang.Object <br> * * @author Tom Fennelly * @see org.milyn.xml.XmlUtil */ public class XmlUtilTest { /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_1() { try { XmlUtil.removeEntities(null, null); fail("no IllegalArgumentException on null reader and null writer"); } catch (IllegalArgumentException excep) { // OK } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_2() { try { Reader reader = new StringReader("abcdefg"); XmlUtil.removeEntities(reader, null); fail("no IllegalArgumentException on null writer"); } catch (IllegalArgumentException excep) { // OK } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_3() { try { StringReader reader = new StringReader("abcdefg"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("abcdefg", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_4() { try { StringReader reader = new StringReader("a&bcdefg"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("a&bcdefg", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_5() { try { StringReader reader = new StringReader("a;bcdefg"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("a;bcdefg", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_6() { try { StringReader reader = new StringReader("&abcdefg;"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&abcdefg;", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_7() { try { StringReader reader = new StringReader("&&abcdefg"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&&abcdefg", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_8() { try { StringReader reader = new StringReader("&;abcdefg;"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&;abcdefg;", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_9() { try { StringReader reader = new StringReader("&bcdefg"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&bcdefg", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_10() { try { StringReader reader = new StringReader("&amp;"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_11() { try { StringReader reader = new StringReader("&&;"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&&;", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_12() { try { StringReader reader = new StringReader("&"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_13() { try { StringReader reader = new StringReader("&;"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&;", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_14() { try { StringReader reader = new StringReader(""); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_15() { try { StringReader reader = new StringReader("abc&#;"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("abc&#;", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_16() { try { StringReader reader = new StringReader("&#;"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&#;", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_17() { try { StringReader reader = new StringReader("abc&#"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("abc&#", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_18() { try { StringReader reader = new StringReader("&#"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&#", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_19() { try { StringReader reader = new StringReader("&#x"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&#x", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_20() { try { StringReader reader = new StringReader("&#x;"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("&#x;", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_21() { try { StringReader reader = new StringReader("<"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("<", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_22() { try { StringReader reader = new StringReader("<"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("<", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_23() { try { StringReader reader = new StringReader("a<"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("a<", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_24() { try { StringReader reader = new StringReader("a<a"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("a<a", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_25() { try { StringReader reader = new StringReader("a<a"); StringWriter writer = new StringWriter(); XmlUtil.removeEntities(reader, writer); assertEquals("a<a", writer.toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRemoveEntities_26() { try { assertEquals("a<a & & &g", XmlUtil .removeEntities("a<a & & &g")); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * Test method: void removeEntities(Reader, Writer) removeEntities throws * java.io.IOException */ @Test public void testRewriteEntities_01() { try { StringReader reader = new StringReader( "a¥a « hh & ; jgha& & gaa &j"); StringWriter writer = new StringWriter(); XmlUtil.rewriteEntities(reader, writer); assertEquals("a¥a « hh & ; jgha& & gaa &j", writer .toString()); } catch (Exception excep) { fail("Unhandled exception: " + excep.getMessage()); } } /** * This method is required because the tests can be run from either ANT or * from within the IDE. * * @return The DTD folder File. */ private File getDTDfolder() { // The DTDs are located in milyn/smooks/dtd try { File dtdFolder = new File("src/test/dtd"); if (!dtdFolder.exists()) { fail("Can't run test - working dir must be 'commons' dir."); } else { return dtdFolder; } } catch (Exception e) { e.printStackTrace(); } return null; } @Test public void testParseStream() { try { Document doc = XmlUtil.parseStream(getClass().getResourceAsStream( "/a.adf"), new LocalDTDEntityResolver(getDTDfolder()), XmlUtil.VALIDATION_TYPE.DTD, true); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } try { Document doc = XmlUtil.parseStream(getClass().getResourceAsStream( "/b.adf"), new LocalDTDEntityResolver(getDTDfolder()), XmlUtil.VALIDATION_TYPE.DTD, true); fail("No failure for invalid document."); } catch (SAXException e) { // OK } catch (IOException e) { e.printStackTrace(); fail(e.getMessage()); } } private Document getXPathDocument() { try { ByteArrayInputStream stream = new ByteArrayInputStream( "<x><y attrib='attribval'/><z>zval</z></x> ".getBytes()); return XmlUtil.parseStream(stream, new LocalDTDEntityResolver( getDTDfolder()), XmlUtil.VALIDATION_TYPE.NONE, true); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } return null; } @Test public void testGetString() { Document doc = getXPathDocument(); assertEquals("attribval", XmlUtil.getString(doc, "/x/y/@attrib")); assertEquals("zval", XmlUtil.getString(doc, "/x/z/text()")); assertEquals("y", XmlUtil.getString(doc, "/x/*[1]/name()")); assertEquals("z", XmlUtil.getString(doc, "/x/*[2]/name()")); assertEquals("<x><y attrib=\"attribval\"/><z>zval</z></x>", XmlUtil.getString(doc, "/x")); } @Test public void test_indent_01() throws IOException { test_indent("xml1.xml"); } @Test public void test_indent_02() throws IOException { test_indent("xml2.xml"); } @Test public void test_indent_03() throws IOException { test_indent("xml3.xml"); } @Test public void test_indent_04() throws IOException { test_indent("xml4.xml"); } @Test public void test_indent_05() throws IOException { test_indent("xml5.xml"); } @Test public void test_indent_06() throws IOException { test_indent("xml6.xml"); } public void test_indent(String inXml) throws IOException { String xmlString = StreamUtils.readStreamAsString(getClass().getResourceAsStream(inXml)); String indentedXML = XmlUtil.indent(xmlString, 4); String indentedXmlExpected = StreamUtils.readStreamAsString(getClass().getResourceAsStream(inXml + ".outexpected")); assertEquals(StreamUtils.normalizeLines(indentedXmlExpected, false), StreamUtils.normalizeLines(indentedXML, false)); } }