package wstream; import java.io.ByteArrayOutputStream; import java.io.StringWriter; import org.codehaus.stax2.XMLOutputFactory2; import org.codehaus.stax2.XMLStreamWriter2; import base.BaseTestCase; // Simple test(s) to ensure that explicit indentation is fine, even outside // root. Related to [#7] public class TestIndentation extends BaseTestCase { final XMLOutputFactory2 OUTPUT_FACTORY = getNewOutputFactory(); public void testRootLevelIndentBytes() throws Exception { _testRootLevelIndent(true); } public void testRootLevelIndentChars() throws Exception { _testRootLevelIndent(false); } public void _testRootLevelIndent(boolean byteBased) throws Exception { final int COUNT = 199999; ByteArrayOutputStream bytes; StringWriter strw; XMLStreamWriter2 sw; if (byteBased) { bytes = new ByteArrayOutputStream(COUNT * 4); strw = null; sw = (XMLStreamWriter2) OUTPUT_FACTORY.createXMLStreamWriter(bytes, "UTF-8"); } else { bytes = null; strw = new StringWriter(COUNT * 4); sw = (XMLStreamWriter2) OUTPUT_FACTORY.createXMLStreamWriter(strw); } sw.writeStartDocument("UTF-8", "1.0"); sw.writeCharacters("\n"); sw.writeStartElement("root"); sw.writeCharacters("x"); sw.writeEndElement(); sw.writeEndDocument(); sw.close(); String xml = byteBased ? bytes.toString("UTF-8") : strw.toString(); if (xml.indexOf("<root>") < 0) { fail("No 'root' in: "+xml); } if (xml.indexOf('\n') < 0) { fail("Should have included linefeed in output: "+xml); } } }