1 package org.columba.core.io; 17 18 import java.io.ByteArrayInputStream ; 19 import java.io.InputStream ; 20 import java.util.Random ; 21 22 import junit.framework.TestCase; 23 24 25 public class CloneInputStreamTest extends TestCase { 26 byte[] test; 27 28 public void testCloneSingle() throws Exception { 29 InputStream master = new ByteArrayInputStream (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 { 54 InputStream master = new ByteArrayInputStream (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 { 70 InputStream master = new ByteArrayInputStream (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 { 95 InputStream master = new ByteArrayInputStream (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 { 113 InputStream master = new ByteArrayInputStream (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 133 protected void setUp() throws Exception { 134 super.setUp(); 135 136 Random random = new Random (); 137 test = new byte[20000]; 138 random.nextBytes(test); 139 } 140 } 141 | Popular Tags |