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
jtulach@63
     1
jtulach@63
     2
package org.apidesign.delegatingwriter;
jtulach@63
     3
jtulach@63
     4
import java.io.IOException;
jtulach@63
     5
import java.io.StringWriter;
jtulach@63
     6
import java.io.StringWriter;
jtulach@63
     7
import org.junit.Before;
jtulach@63
     8
import org.junit.Test;
jtulach@63
     9
import static org.junit.Assert.*;
jtulach@63
    10
jtulach@63
    11
/** Emulates what goes wrong when delegating directly
jtulach@63
    12
 *
jtulach@63
    13
 * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
jtulach@63
    14
 */
jtulach@63
    15
public class BufferedWriterCryptoTest {
jtulach@63
    16
    private StringWriter writer;
jtulach@67
    17
    private String fromCode;
jtulach@67
    18
    private String toCode;
jtulach@63
    19
    
jtulach@63
    20
    public BufferedWriterCryptoTest() {
jtulach@63
    21
    }
jtulach@63
    22
    
jtulach@63
    23
    @Before
jtulach@63
    24
    public void setUp() {
jtulach@63
    25
        writer = new StringWriter();
jtulach@67
    26
        StringBuffer f = new StringBuffer();
jtulach@67
    27
        StringBuffer t = new StringBuffer();
jtulach@67
    28
        for (int i = 0; i < 500; i++) {
jtulach@67
    29
            f.append("VMS");
jtulach@67
    30
            t.append("WNT");
jtulach@67
    31
        }
jtulach@67
    32
        fromCode = f.toString();
jtulach@67
    33
        toCode = t.toString();
jtulach@63
    34
    }
jtulach@63
    35
jtulach@63
    36
    @Test
jtulach@63
    37
    public void testBehaviourOfRealBufferInJDKWorksFine() throws IOException {
jtulach@63
    38
        // BEGIN: writer.crypto.ok
jtulach@63
    39
        CryptoWriter bufferedWriter = new CryptoWriter(writer);
jtulach@63
    40
        bufferedWriter.append("VMS");
jtulach@63
    41
        bufferedWriter.flush();
jtulach@63
    42
        assertEquals("Converted", "WNT", writer.toString());
jtulach@63
    43
        // END: writer.crypto.ok
jtulach@63
    44
    }
jtulach@63
    45
jtulach@63
    46
    @Test
jtulach@67
    47
    public void testBehaviourOfRealBufferInJDKWorksFineOnLongSentences() throws IOException {
jtulach@67
    48
        CryptoWriter bufferedWriter = new CryptoWriter(writer);
jtulach@67
    49
        bufferedWriter.append(fromCode);
jtulach@67
    50
        bufferedWriter.flush();
jtulach@67
    51
        assertEquals("Converted", toCode, writer.toString());
jtulach@67
    52
    }
jtulach@67
    53
jtulach@67
    54
    @Test
jtulach@63
    55
    public void testBehaviourOfBufferThatDelegatesToAppendFails() throws IOException {
jtulach@63
    56
        CryptoWriter bufferedWriter = new CryptoWriter(writer, CryptoWriter.Behaviour.DELEGATE_TO_OUT);
jtulach@67
    57
        bufferedWriter.append(fromCode);
jtulach@63
    58
        bufferedWriter.flush();
jtulach@63
    59
        assertEquals("This will fail, as the direct delegation from append to " +
jtulach@63
    60
            "the underlaying writer will skip all the crypto methods", 
jtulach@67
    61
            toCode, writer.toString()
jtulach@63
    62
        );
jtulach@63
    63
    }
jtulach@63
    64
jtulach@64
    65
    @Test
jtulach@64
    66
    public void testBehaviourWhenDelegatingConditionallyIsOK() throws IOException {
jtulach@64
    67
        CryptoWriter bufferedWriter = new CryptoWriter(writer, AltBufferedWriter.Behaviour.DELEGATE_CONDITIONALLY);
jtulach@64
    68
        bufferedWriter.append("VMS");
jtulach@64
    69
        bufferedWriter.flush();
jtulach@64
    70
        assertEquals("Converted", "WNT", writer.toString());
jtulach@64
    71
    }
jtulach@64
    72
    
jtulach@63
    73
}