samples/delegatingwriter/test/org/apidesign/delegatingwriter/BufferedWriterCryptoTest.java
As the purpose of buffer is to "buffer", let's modify our example to delegate to appendable methods directly only if the appendable is too big
2 package org.apidesign.delegatingwriter;
4 import java.io.IOException;
5 import java.io.StringWriter;
6 import java.io.StringWriter;
7 import org.junit.Before;
9 import static org.junit.Assert.*;
11 /** Emulates what goes wrong when delegating directly
13 * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
15 public class BufferedWriterCryptoTest {
16 private StringWriter writer;
17 private String fromCode;
18 private String toCode;
20 public BufferedWriterCryptoTest() {
25 writer = new StringWriter();
26 StringBuffer f = new StringBuffer();
27 StringBuffer t = new StringBuffer();
28 for (int i = 0; i < 500; i++) {
32 fromCode = f.toString();
33 toCode = t.toString();
37 public void testBehaviourOfRealBufferInJDKWorksFine() throws IOException {
38 // BEGIN: writer.crypto.ok
39 CryptoWriter bufferedWriter = new CryptoWriter(writer);
40 bufferedWriter.append("VMS");
41 bufferedWriter.flush();
42 assertEquals("Converted", "WNT", writer.toString());
43 // END: writer.crypto.ok
47 public void testBehaviourOfRealBufferInJDKWorksFineOnLongSentences() throws IOException {
48 CryptoWriter bufferedWriter = new CryptoWriter(writer);
49 bufferedWriter.append(fromCode);
50 bufferedWriter.flush();
51 assertEquals("Converted", toCode, writer.toString());
55 public void testBehaviourOfBufferThatDelegatesToAppendFails() throws IOException {
56 CryptoWriter bufferedWriter = new CryptoWriter(writer, CryptoWriter.Behaviour.DELEGATE_TO_OUT);
57 bufferedWriter.append(fromCode);
58 bufferedWriter.flush();
59 assertEquals("This will fail, as the direct delegation from append to " +
60 "the underlaying writer will skip all the crypto methods",
61 toCode, writer.toString()
66 public void testBehaviourWhenDelegatingConditionallyIsOK() throws IOException {
67 CryptoWriter bufferedWriter = new CryptoWriter(writer, AltBufferedWriter.Behaviour.DELEGATE_CONDITIONALLY);
68 bufferedWriter.append("VMS");
69 bufferedWriter.flush();
70 assertEquals("Converted", "WNT", writer.toString());