package org.marketcetera.util.file; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.OutputStream; import org.junit.Test; import static org.junit.Assert.*; /** * @author tlerios@marketcetera.com * @since 0.5.0 * @version $Id: OutputStreamWrapperTest.java 16154 2012-07-14 16:34:05Z colin $ */ /* $License$ */ public class OutputStreamWrapperTest extends WrapperTestBase { private static final class CloseCounterOutputStream extends OutputStream { private int mClosures=0; private int mFlushes=0; int getClosures() { return mClosures; } int getFlushes() { return mFlushes; } @Override public void write (int b) {} @Override public void flush() { mFlushes++; } @Override public void close() { mClosures++; } } @Test public void basics() throws Exception { CloseCounterOutputStream counter=new CloseCounterOutputStream(); OutputStreamWrapper out=new OutputStreamWrapper(counter); assertEquals(0,counter.getClosures()); assertEquals(0,counter.getFlushes()); assertFalse(out.getSkipClose()); assertNotNull(out.getStream()); out.close(); assertEquals(1,counter.getClosures()); assertEquals(1,counter.getFlushes()); out.close(); assertEquals(1,counter.getClosures()); assertEquals(1,counter.getFlushes()); counter=new CloseCounterOutputStream(); out=new OutputStreamWrapper(counter,true); assertEquals(0,counter.getClosures()); assertEquals(0,counter.getFlushes()); assertTrue(out.getSkipClose()); assertNotNull(out.getStream()); out.close(); assertEquals(0,counter.getClosures()); assertEquals(1,counter.getFlushes()); out.close(); assertEquals(0,counter.getClosures()); assertEquals(2,counter.getFlushes()); } @Test(expected=FileNotFoundException.class) public void nonexistentFile() throws Exception { new OutputStreamWrapper(TEST_NONEXISTENT_FILE); } private static void testStandardStream (String name, ByteArrayOutputStream out) throws Exception { CloseableRegistry r=new CloseableRegistry(); try { OutputStreamWrapper wrapper=new OutputStreamWrapper(name); r.register(wrapper); assertTrue(wrapper.getSkipClose()); assertNotNull(wrapper.getStream()); wrapper.getStream().write(VALUE_BYTES); } finally { r.close(); } assertArrayEquals(VALUE_BYTES,out.toByteArray()); } @Override protected void testStandardOutputStream (ByteArrayOutputStream out) throws Exception { testStandardStream(SpecialNames.STANDARD_OUTPUT,out); } @Override protected void testStandardErrorStream (ByteArrayOutputStream err) throws Exception { testStandardStream(SpecialNames.STANDARD_ERROR,err); } @Test public void wrappers() throws Exception { testStandardOutputStream(); testStandardErrorStream(); } }