jtulach@61: jtulach@61: package org.apidesign.delegatingwriter; jtulach@61: jtulach@61: import java.io.BufferedWriter; jtulach@61: import java.io.IOException; jtulach@61: import java.io.StringWriter; jtulach@61: import org.junit.Before; jtulach@61: import org.junit.Test; jtulach@61: import static org.junit.Assert.*; jtulach@61: jtulach@61: /** jtulach@61: * jtulach@61: * @author Jaroslav Tulach jtulach@61: */ jtulach@61: public class BufferedWriterThrowingExceptionTest { jtulach@61: private StringWriter writer; jtulach@61: jtulach@61: public BufferedWriterThrowingExceptionTest() { jtulach@61: } jtulach@61: jtulach@61: @Before jtulach@61: public void setUp() { jtulach@61: writer = new StringWriter(); jtulach@61: } jtulach@61: jtulach@61: @Test jtulach@61: public void testBehaviourOfRealBufferInJDK() throws IOException { jtulach@61: BufferedWriter bufferedWriter = new BufferedWriter(writer); jtulach@61: doAppendHello(bufferedWriter, "Hello!"); jtulach@61: bufferedWriter.flush(); jtulach@61: jtulach@61: assertEquals("Hello!", writer.toString()); jtulach@61: } jtulach@61: jtulach@61: @Test jtulach@61: public void testBehaviourOfBufferThatThrowsExceptionWhenAppendIsCalled() throws IOException { jtulach@61: BufferedWriter bufferedWriter = new AltBufferedWriter(writer, AltBufferedWriter.Behaviour.THROW_EXCEPTION); jtulach@61: doAppendHello(bufferedWriter, "Hello!"); jtulach@61: bufferedWriter.flush(); jtulach@61: jtulach@61: assertEquals("Hello!", writer.toString()); jtulach@61: } jtulach@61: jtulach@64: @Test jtulach@64: public void testBehaviourWhenDelegatingConditionallyIsOK() throws IOException { jtulach@64: BufferedWriter bufferedWriter = new AltBufferedWriter(writer, AltBufferedWriter.Behaviour.DELEGATE_CONDITIONALLY); jtulach@64: doAppendHello(bufferedWriter, "Hello!"); jtulach@64: bufferedWriter.flush(); jtulach@64: jtulach@64: assertEquals("Hello!", writer.toString()); jtulach@64: } jtulach@61: jtulach@61: private void doAppendHello(BufferedWriter bufferedWriter, CharSequence what) throws IOException { jtulach@61: // BEGIN: writer.throw.client jtulach@61: try { jtulach@61: bufferedWriter.append(what); jtulach@61: } catch (UnsupportedOperationException ex) { jtulach@61: bufferedWriter.write(what.toString()); jtulach@61: } jtulach@61: // END: writer.throw.client jtulach@61: } jtulach@61: jtulach@61: }