KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > core > io > CloneInputStreamTest


1 //The contents of this file are subject to the Mozilla Public License Version 1.1
2
//(the "License"); you may not use this file except in compliance with the
3
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
4
//
5
//Software distributed under the License is distributed on an "AS IS" basis,
6
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
7
//for the specific language governing rights and
8
//limitations under the License.
9
//
10
//The Original Code is "The Columba Project"
11
//
12
//The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
13
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
14
//
15
//All Rights Reserved.
16
package org.columba.core.io;
17
18 import java.io.ByteArrayInputStream JavaDoc;
19 import java.io.InputStream JavaDoc;
20 import java.util.Random JavaDoc;
21
22 import junit.framework.TestCase;
23
24
25 public class CloneInputStreamTest extends TestCase {
26     byte[] test;
27
28     public void testCloneSingle() throws Exception JavaDoc {
29         InputStream JavaDoc master = new ByteArrayInputStream JavaDoc(test);
30         CloneStreamMaster model = new CloneStreamMaster(master);
31         CloneInputStream clone1 = model.getClone();
32         CloneInputStream clone2 = model.getClone();
33
34         byte[] result1 = new byte[20000];
35         byte[] result2 = new byte[20000];
36
37         for (int i = 0; i < 20000; i++) {
38             if ((i % 2) == 0) {
39                 result1[i] = (byte) clone1.read();
40                 result2[i] = (byte) clone2.read();
41             } else {
42                 result2[i] = (byte) clone2.read();
43                 result1[i] = (byte) clone1.read();
44             }
45         }
46
47         for (int i = 0; i < 20000; i++) {
48             assertTrue(result1[i] == test[i]);
49             assertTrue(result2[i] == test[i]);
50         }
51     }
52
53     public void testEOFSingle() throws Exception JavaDoc {
54         InputStream JavaDoc master = new ByteArrayInputStream JavaDoc(test);
55         CloneStreamMaster model = new CloneStreamMaster(master);
56         CloneInputStream clone1 = model.getClone();
57
58         int lastRead = clone1.read();
59         int pos = 1;
60
61         while (lastRead != -1) {
62             lastRead = clone1.read();
63             pos++;
64         }
65
66         assertTrue(pos == 20001);
67     }
68
69     public void testCloneMulti() throws Exception JavaDoc {
70         InputStream JavaDoc master = new ByteArrayInputStream JavaDoc(test);
71         CloneStreamMaster model = new CloneStreamMaster(master);
72         CloneInputStream clone1 = model.getClone();
73         CloneInputStream clone2 = model.getClone();
74
75         byte[] result1 = new byte[20000];
76         byte[] result2 = new byte[20000];
77
78         for (int i = 0; i < (20000 / 50); i++) {
79             if ((i % 2) == 0) {
80                 clone1.read(result1, i * 50, 50);
81                 clone2.read(result2, i * 50, 50);
82             } else {
83                 clone2.read(result2, i * 50, 50);
84                 clone1.read(result1, i * 50, 50);
85             }
86         }
87
88         for (int i = 0; i < 20000; i++) {
89             assertTrue(result1[i] == test[i]);
90             assertTrue(result2[i] == test[i]);
91         }
92     }
93
94     public void testEOFMulti1() throws Exception JavaDoc {
95         InputStream JavaDoc master = new ByteArrayInputStream JavaDoc(test);
96         CloneStreamMaster model = new CloneStreamMaster(master);
97         CloneInputStream clone1 = model.getClone();
98
99         byte[] buffer = new byte[50];
100
101         int lastRead = clone1.read(buffer);
102         int pos = lastRead;
103
104         while (lastRead != -1) {
105             lastRead = clone1.read(buffer);
106             pos += lastRead;
107         }
108
109         assertTrue(pos == 19999);
110     }
111
112     public void testEOFMulti2() throws Exception JavaDoc {
113         InputStream JavaDoc master = new ByteArrayInputStream JavaDoc(test);
114         CloneStreamMaster model = new CloneStreamMaster(master);
115         CloneInputStream clone1 = model.getClone();
116
117         byte[] buffer = new byte[30];
118
119         int lastRead = clone1.read(buffer);
120         int pos = lastRead;
121
122         while (lastRead == 30) {
123             lastRead = clone1.read(buffer);
124             pos += lastRead;
125         }
126
127         assertTrue(pos == 20000);
128     }
129
130     /* (non-Javadoc)
131  * @see junit.framework.TestCase#setUp()
132  */

133     protected void setUp() throws Exception JavaDoc {
134         super.setUp();
135
136         Random JavaDoc random = new Random JavaDoc();
137         test = new byte[20000];
138         random.nextBytes(test);
139     }
140 }
141
Popular Tags