package org.marketcetera.util.file;
import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* @author tlerios@marketcetera.com
* @since 0.5.0
* @version $Id: InputStreamWrapperTest.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
public class InputStreamWrapperTest
extends WrapperTestBase
{
private static final class CloseCounterInputStream
extends InputStream
{
private int mClosures=0;
int getClosures()
{
return mClosures;
}
@Override
public int read()
{
return 0;
}
@Override
public void close()
{
mClosures++;
}
}
@Test
public void basics()
throws Exception
{
CloseCounterInputStream counter=new CloseCounterInputStream();
InputStreamWrapper out=new InputStreamWrapper(counter);
assertEquals(0,counter.getClosures());
assertFalse(out.getSkipClose());
assertNotNull(out.getStream());
out.close();
assertEquals(1,counter.getClosures());
out.close();
assertEquals(1,counter.getClosures());
counter=new CloseCounterInputStream();
out=new InputStreamWrapper(counter,true);
assertEquals(0,counter.getClosures());
assertTrue(out.getSkipClose());
assertNotNull(out.getStream());
out.close();
assertEquals(0,counter.getClosures());
out.close();
assertEquals(0,counter.getClosures());
}
@Test(expected=FileNotFoundException.class)
public void nonexistentFileInputStream()
throws Exception
{
new InputStreamWrapper(TEST_NONEXISTENT_FILE);
}
@Override
protected void testStandardInputStream
(ByteArrayInputStream in)
throws Exception
{
CloseableRegistry r=new CloseableRegistry();
try {
InputStreamWrapper wrapper=new InputStreamWrapper
(SpecialNames.STANDARD_INPUT);
r.register(wrapper);
assertTrue(wrapper.getSkipClose());
assertNotNull(wrapper.getStream());
assertArrayEquals
(VALUE_BYTES,IOUtils.toByteArray(wrapper.getStream()));
} finally {
r.close();
}
}
@Test
public void wrappers()
throws Exception
{
testStandardInputStream();
}
}