1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.james.jdkim.canon;
21
22 import java.io.ByteArrayOutputStream;
23 import java.io.IOException;
24 import java.io.OutputStream;
25 import java.security.NoSuchAlgorithmException;
26
27 public class LimitedOutputStreamTest extends AbstractOutputStreamTestCase {
28
29 private byte[] testData;
30 private byte[] expectedData;
31
32 protected void setUp() throws Exception {
33 testData = "this is a \r\n canonicalization \ttest\r\n\r\n\r\n"
34 .getBytes();
35 expectedData = "this is a \r\n canonicalizatio".getBytes();
36 }
37
38 public void testSingleBytes() throws NoSuchAlgorithmException, IOException {
39 ByteArrayOutputStream bos = new ByteArrayOutputStream();
40 LimitedOutputStream os = new LimitedOutputStream(bos, 30);
41 for (int i = 0; i < testData.length; i++) {
42 assertEquals(i >= 30, os.isLimited());
43 if (i == 30) {
44 assertArrayEquals(expectedData, bos.toByteArray());
45 }
46 os.write(testData[i]);
47 }
48 os.close();
49 assertEquals(30, os.getComputedBytes());
50 assertArrayEquals(expectedData, bos.toByteArray());
51 }
52
53 public void testChunks() throws NoSuchAlgorithmException, IOException {
54 ByteArrayOutputStream bos = new ByteArrayOutputStream();
55 LimitedOutputStream os = new LimitedOutputStream(bos, 30);
56 chunker(testData, os);
57 assertEquals(30, os.getComputedBytes());
58 assertArrayEquals(expectedData, bos.toByteArray());
59 }
60
61 protected OutputStream newInstance(ByteArrayOutputStream bos) {
62 return new LimitedOutputStream(bos, 30);
63 }
64
65 public void testExtensiveChunks() throws NoSuchAlgorithmException,
66 IOException {
67 extensiveChunker(testData, expectedData);
68 }
69
70 }