package org.marketcetera.util.file;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.marketcetera.util.except.I18NException;
import org.marketcetera.util.log.I18NBoundMessage1P;
import org.marketcetera.util.log.I18NBoundMessage2P;
import static org.junit.Assert.*;
import static org.marketcetera.util.test.UnicodeData.*;
/**
* @author tlerios@marketcetera.com
* @since 0.6.0
* @version $Id: CopyCharsUtilsTest.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
public class CopyCharsUtilsTest
extends CopyUtilsTestBase
{
private static final char[] VALUE=
HELLO_EN_CHARS;
private static void copyReader
(String out)
throws Exception
{
CloseableRegistry r=new CloseableRegistry();
try {
ReaderWrapper in=new ReaderWrapper(TEST_INPUT_FILE);
r.register(in);
assertEquals(VALUE.length,
CopyCharsUtils.copy(in.getReader(),true,out));
} finally {
r.close();
}
}
private static void copyWriter
(String in)
throws Exception
{
CloseableRegistry r=new CloseableRegistry();
try {
WriterWrapper out=new WriterWrapper(TEST_OUTPUT_FILE);
r.register(out);
assertEquals(VALUE.length,
CopyCharsUtils.copy(in,out.getWriter(),true));
} finally {
r.close();
}
}
@Before
@After
public void setupTearDownCopyCharsUtilsTest()
throws Exception
{
Deleter.apply(TEST_INPUT_FILE);
Deleter.apply(TEST_OUTPUT_FILE);
}
@Test
public void copyReaderWriter()
throws Exception
{
CopyCharsUtils.copy(VALUE,TEST_INPUT_FILE);
CloseableRegistry r=new CloseableRegistry();
try {
ReaderWrapper in=new ReaderWrapper(TEST_INPUT_FILE);
r.register(in);
WriterWrapper out=new WriterWrapper(TEST_OUTPUT_FILE);
r.register(out);
assertEquals(VALUE.length,
CopyCharsUtils.copy(in.getReader(),true,
out.getWriter(),true));
} finally {
r.close();
}
assertArrayEquals(VALUE,CopyCharsUtils.copy(TEST_OUTPUT_FILE));
}
@Test
public void copyMemory()
throws Exception
{
CopyCharsUtils.copy(VALUE,TEST_INPUT_FILE);
assertArrayEquals(VALUE,CopyCharsUtils.copy(TEST_INPUT_FILE));
}
@Test
public void copyReader()
throws Exception
{
CopyCharsUtils.copy(VALUE,TEST_INPUT_FILE);
copyReader(TEST_OUTPUT_FILE);
assertArrayEquals(VALUE,CopyCharsUtils.copy(TEST_OUTPUT_FILE));
}
@Test
public void copyWriter()
throws Exception
{
CopyCharsUtils.copy(VALUE,TEST_INPUT_FILE);
copyWriter(TEST_INPUT_FILE);
assertArrayEquals(VALUE,CopyCharsUtils.copy(TEST_OUTPUT_FILE));
}
@Test
public void copyFiles()
throws Exception
{
CopyCharsUtils.copy(VALUE,TEST_INPUT_FILE);
assertEquals(VALUE.length,
CopyCharsUtils.copy(TEST_INPUT_FILE,TEST_OUTPUT_FILE));
assertArrayEquals(VALUE,CopyCharsUtils.copy(TEST_OUTPUT_FILE));
}
@Test
public void failReaderWriter()
throws Exception
{
CopyCharsUtils.copy(VALUE,TEST_INPUT_FILE);
CloseableRegistry r=new CloseableRegistry();
try {
ReaderWrapper in=new ReaderWrapper(TEST_INPUT_FILE);
r.register(in);
WriterWrapper out=new WriterWrapper(TEST_OUTPUT_FILE);
r.register(out);
out.getWriter().close();
CopyCharsUtils.copy(in.getReader(),true,out.getWriter(),true);
fail();
} catch (I18NException ex) {
assertEquals(ex.getDetail(),Messages.CANNOT_COPY_CSTREAMS,
ex.getI18NBoundMessage());
} finally {
r.close();
}
}
@Test
public void failFileInput()
{
try {
CopyCharsUtils.copy(TEST_NONEXISTENT_FILE,TEST_OUTPUT_FILE);
fail();
} catch (I18NException ex) {
assertEquals
(ex.getDetail(),
new I18NBoundMessage2P(Messages.CANNOT_COPY_FILES,
TEST_NONEXISTENT_FILE,TEST_OUTPUT_FILE),
ex.getI18NBoundMessage());
}
}
@Test
public void failFileOutput()
throws Exception
{
CopyCharsUtils.copy(VALUE,TEST_INPUT_FILE);
try {
CopyCharsUtils.copy(TEST_INPUT_FILE,TEST_NONEXISTENT_FILE);
fail();
} catch (I18NException ex) {
assertEquals
(ex.getDetail(),
new I18NBoundMessage2P(Messages.CANNOT_COPY_FILES,
TEST_INPUT_FILE,TEST_NONEXISTENT_FILE),
ex.getI18NBoundMessage());
}
}
@Test
public void failReader()
throws Exception
{
CopyCharsUtils.copy(VALUE,TEST_INPUT_FILE);
try {
copyReader(TEST_NONEXISTENT_FILE);
fail();
} catch (I18NException ex) {
assertEquals
(ex.getDetail(),
new I18NBoundMessage1P(Messages.CANNOT_COPY_READER,
TEST_NONEXISTENT_FILE),
ex.getI18NBoundMessage());
}
}
@Test
public void failWriter()
throws Exception
{
try {
copyWriter(TEST_NONEXISTENT_FILE);
fail();
} catch (I18NException ex) {
assertEquals
(ex.getDetail(),
new I18NBoundMessage1P(Messages.CANNOT_COPY_WRITER,
TEST_NONEXISTENT_FILE),
ex.getI18NBoundMessage());
}
}
@Test
public void failMemoryDst()
{
try {
CopyCharsUtils.copy(TEST_NONEXISTENT_FILE);
fail();
} catch (I18NException ex) {
assertEquals
(ex.getDetail(),
new I18NBoundMessage1P(Messages.CANNOT_COPY_MEMORY_DST,
TEST_NONEXISTENT_FILE),
ex.getI18NBoundMessage());
}
}
@Test
public void failMemorySrc()
{
try {
CopyCharsUtils.copy(VALUE,TEST_NONEXISTENT_FILE);
fail();
} catch (I18NException ex) {
assertEquals
(ex.getDetail(),
new I18NBoundMessage1P(Messages.CANNOT_COPY_MEMORY_SRC,
TEST_NONEXISTENT_FILE),
ex.getI18NBoundMessage());
}
}
@Test
public void closeCalled()
throws Exception
{
CloseSetReader in=new CloseSetReader();
CloseSetWriter out=new CloseSetWriter();
CopyCharsUtils.copy(in,true,out,true);
assertFalse(in.getClosed());
assertFalse(out.getClosed());
in=new CloseSetReader();
out=new CloseSetWriter();
CopyCharsUtils.copy(in,true,out,false);
assertFalse(in.getClosed());
assertTrue(out.getClosed());
in=new CloseSetReader();
out=new CloseSetWriter();
CopyCharsUtils.copy(in,false,out,true);
assertTrue(in.getClosed());
assertFalse(out.getClosed());
in=new CloseSetReader();
out=new CloseSetWriter();
CopyCharsUtils.copy(in,false,out,false);
assertTrue(in.getClosed());
assertTrue(out.getClosed());
in=new CloseSetReader();
CopyCharsUtils.copy(in,true,TEST_INPUT_FILE);
assertFalse(in.getClosed());
in=new CloseSetReader();
CopyCharsUtils.copy(in,false,TEST_INPUT_FILE);
assertTrue(in.getClosed());
out=new CloseSetWriter();
CopyCharsUtils.copy(TEST_INPUT_FILE,out,true);
assertFalse(out.getClosed());
out=new CloseSetWriter();
CopyCharsUtils.copy(TEST_INPUT_FILE,out,false);
assertTrue(out.getClosed());
}
}