org.marketcetera.util.unicode.WriterTest.java Source code

Java tutorial

Introduction

Here is the source code for org.marketcetera.util.unicode.WriterTest.java

Source

package org.marketcetera.util.unicode;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.commons.lang.ArrayUtils;
import org.junit.Test;
import org.marketcetera.util.file.CloseableRegistry;
import org.marketcetera.util.file.OutputStreamWrapper;
import org.marketcetera.util.file.WriterWrapper;
import org.marketcetera.util.test.TestCaseBase;

import static org.junit.Assert.*;

/**
 * @author tlerios@marketcetera.com
 * @since 0.6.0
 * @version $Id$
 */

/* $License$ */

public class WriterTest extends TestCaseBase {
    @Test
    public void writer() throws Exception {
        CloseableRegistry r = new CloseableRegistry();
        try {
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            r.register(new OutputStreamWrapper(os));
            UnicodeOutputStreamWriter writer = new UnicodeOutputStreamWriter(os);
            r.register(new WriterWrapper(writer));

            assertNull(writer.getRequestedSignatureCharset());
            assertNull(writer.getSignatureCharset());

            assertArrayEquals(ArrayUtils.EMPTY_BYTE_ARRAY, os.toByteArray());

            writer.write('a');
            writer.flush();
            assertEquals("a", new String(os.toByteArray()));

            writer.write(new char[] { 'b', 'c' });
            writer.flush();
            assertEquals("abc", new String(os.toByteArray()));

            writer.write(new char[] { 'b', 'd', 'e', 'f' }, 1, 2);
            writer.flush();
            assertEquals("abcde", new String(os.toByteArray()));

            writer.write("fg");
            writer.flush();
            assertEquals("abcdefg", new String(os.toByteArray()));

            writer.write("ghij", 1, 2);
            writer.flush();
            assertEquals("abcdefghi", new String(os.toByteArray()));

            writer.append("jk");
            writer.flush();
            assertEquals("abcdefghijk", new String(os.toByteArray()));

            writer.append("klmn", 1, 3);
            writer.flush();
            assertEquals("abcdefghijklm", new String(os.toByteArray()));

            writer.append('n');
            writer.flush();
            assertEquals("abcdefghijklmn", new String(os.toByteArray()));

            writer.close();
            writer.close();

            // Ensure that close() has closed the stream, by trying to
            // write to the writer: this is not testing whether
            // write() fails; it tests whether close() worked.
            try {
                writer.write('a');
                fail();
            } catch (IOException ex) {
                // Desired.
            }
        } finally {
            r.close();
        }
    }
}