package org.marketcetera.util.unicode;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import org.marketcetera.util.file.CloseableRegistry;
import org.marketcetera.util.file.InputStreamWrapper;
import org.marketcetera.util.file.ReaderWrapper;
import static org.junit.Assert.*;
/**
* @author tlerios@marketcetera.com
* @since 0.6.0
* @version $Id: MemoryDecoderTest.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
public class MemoryDecoderTest
extends DecoderTestBase
{
private static interface ReaderCreator
{
UnicodeInputStreamReader create
(InputStream is);
}
private String decode
(ReaderCreator creator,
DecodingStrategy strategy,
SignatureCharset requestedSignatureCharset,
SignatureCharset signatureCharset,
byte[] bytes)
throws Exception
{
CloseableRegistry r=new CloseableRegistry();
try {
ByteArrayInputStream is=new ByteArrayInputStream(bytes);
r.register(new InputStreamWrapper(is));
UnicodeInputStreamReader reader=creator.create(is);
r.register(new ReaderWrapper(reader));
assertEquals(strategy,reader.getDecodingStrategy());
assertEquals(requestedSignatureCharset,
reader.getRequestedSignatureCharset());
assertEquals(signatureCharset,
reader.getSignatureCharset());
return IOUtils.toString(reader);
} finally {
r.close();
}
}
@Override
protected String decode
(byte[] bytes)
throws Exception
{
return decode(new ReaderCreator()
{
@Override
public UnicodeInputStreamReader create
(InputStream is)
{
return new UnicodeInputStreamReader(is);
}
},null,null,null,bytes);
}
@Override
protected String decode
(final SignatureCharset sc,
byte[] bytes)
throws Exception
{
return decode(new ReaderCreator()
{
@Override
public UnicodeInputStreamReader create
(InputStream is)
{
return new UnicodeInputStreamReader(is,sc);
}
},null,sc,sc,bytes);
}
@Override
protected String decode
(final DecodingStrategy strategy,
SignatureCharset sc,
byte[] bytes)
throws Exception
{
return decode(new ReaderCreator()
{
@Override
public UnicodeInputStreamReader create
(InputStream is)
{
return new UnicodeInputStreamReader(is,strategy);
}
},strategy,null,sc,bytes);
}
}