samples/delegatingwriter/test/org/apidesign/delegatingwriter/BufferedWriterCryptoTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 18:51:38 +0200
changeset 263 7e8e995065c5
parent 67 b029a28df444
permissions -rw-r--r--
Tests of all modules are executed and can fail the build
     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         if (Boolean.getBoolean("no.failures")) return;
    60         assertEquals("This will fail, as the direct delegation from append to " +
    61             "the underlaying writer will skip all the crypto methods", 
    62             toCode, writer.toString()
    63         );
    64     }
    65 
    66     @Test
    67     public void testBehaviourWhenDelegatingConditionallyIsOK() throws IOException {
    68         CryptoWriter bufferedWriter = new CryptoWriter(writer, AltBufferedWriter.Behaviour.DELEGATE_CONDITIONALLY);
    69         bufferedWriter.append("VMS");
    70         bufferedWriter.flush();
    71         assertEquals("Converted", "WNT", writer.toString());
    72     }
    73     
    74 }