package org.marketcetera.util.unicode;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.Reader;
import org.marketcetera.util.file.CloseableRegistry;
import org.marketcetera.util.file.OutputStreamWrapper;
import org.marketcetera.util.file.WriterWrapper;
import static org.junit.Assert.*;
/**
* @author tlerios@marketcetera.com
* @since 0.6.0
* @version $Id: MemoryEncoderTest.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
public class MemoryEncoderTest
extends EncoderTestBase
{
private static interface WriterCreator
{
UnicodeOutputStreamWriter create
(OutputStream os)
throws Exception;
}
private byte[] encode
(WriterCreator creator,
SignatureCharset requestedSignatureCharset,
SignatureCharset signatureCharset,
String string)
throws Exception
{
CloseableRegistry r=new CloseableRegistry();
ByteArrayOutputStream os=new ByteArrayOutputStream();
try {
r.register(new OutputStreamWrapper(os));
UnicodeOutputStreamWriter writer=creator.create(os);
r.register(new WriterWrapper(writer));
assertEquals(requestedSignatureCharset,
writer.getRequestedSignatureCharset());
assertEquals(signatureCharset,
writer.getSignatureCharset());
writer.write(string);
} finally {
r.close();
}
return os.toByteArray();
}
@Override
protected byte[] encode
(String string)
throws Exception
{
return encode(new WriterCreator()
{
@Override
public UnicodeOutputStreamWriter create
(OutputStream os)
{
return new UnicodeOutputStreamWriter(os);
}
},null,null,string);
}
@Override
protected byte[] encode
(final SignatureCharset sc,
String string)
throws Exception
{
return encode(new WriterCreator()
{
@Override
public UnicodeOutputStreamWriter create
(OutputStream os)
{
return new UnicodeOutputStreamWriter(os,sc);
}
},sc,sc,string);
}
@Override
protected byte[] encode
(final Reader reader,
SignatureCharset sc,
String string)
throws Exception
{
return encode(new WriterCreator()
{
@Override
public UnicodeOutputStreamWriter create
(OutputStream os)
throws Exception
{
return new UnicodeOutputStreamWriter(os,reader);
}
},sc,sc,string);
}
}