samples/delegatingwriter/test/org/apidesign/delegatingwriter/BufferedWriterCryptoTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:53:07 +0200
changeset 67 b029a28df444
parent 64 7b26c64804c2
child 263 7e8e995065c5
permissions -rw-r--r--
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
     1 
     2 package org.apidesign.delegatingwriter;
     3 
     4 import java.io.IOException;
     5 import java.io.StringWriter;
     6 import java.io.StringWriter;
     7 import org.junit.Before;
     8 import org.junit.Test;
     9 import static org.junit.Assert.*;
    10 
    11 /** Emulates what goes wrong when delegating directly
    12  *
    13  * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    14  */
    15 public class BufferedWriterCryptoTest {
    16     private StringWriter writer;
    17     private String fromCode;
    18     private String toCode;
    19     
    20     public BufferedWriterCryptoTest() {
    21     }
    22     
    23     @Before
    24     public void setUp() {
    25         writer = new StringWriter();
    26         StringBuffer f = new StringBuffer();
    27         StringBuffer t = new StringBuffer();
    28         for (int i = 0; i < 500; i++) {
    29             f.append("VMS");
    30             t.append("WNT");
    31         }
    32         fromCode = f.toString();
    33         toCode = t.toString();
    34     }
    35 
    36     @Test
    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
    44     }
    45 
    46     @Test
    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());
    52     }
    53 
    54     @Test
    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()
    62         );
    63     }
    64 
    65     @Test
    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());
    71     }
    72     
    73 }