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 |
} |