Adding a new test fragment for xdebug unit tests.
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.test / src / net / sourceforge / phpeclipse / xdebug / core / Base64Test.java
1 package net.sourceforge.phpeclipse.xdebug.core;
2
3 import java.io.ByteArrayInputStream;
4 import java.io.ByteArrayOutputStream;
5 import java.io.OutputStream;
6 import java.util.Arrays;
7 import java.util.Random;
8
9 import junit.framework.TestCase;
10
11 public class Base64Test extends TestCase {
12         private static final long SEED = 12345678;
13         private static Random s_random = new Random(SEED);
14
15         private byte[] createData(int length) throws Exception {
16                 byte[] bytes = new byte[length];
17                 s_random.nextBytes(bytes);
18                 return bytes;
19         }
20
21         private void runStreamTest(int length) throws Exception {
22                 byte[] data = createData(length);
23                 ByteArrayOutputStream out_bytes = new ByteArrayOutputStream();
24                 OutputStream out = new Base64.OutputStream(out_bytes);
25                 out.write(data);
26                 out.close();
27                 byte[] encoded = out_bytes.toByteArray();
28                 byte[] decoded = Base64.decode(encoded, 0, encoded.length);
29                 assertTrue(Arrays.equals(data, decoded));
30
31                 Base64.InputStream in = new Base64.InputStream(
32                                 new ByteArrayInputStream(encoded));
33                 out_bytes = new ByteArrayOutputStream();
34                 byte[] buffer = new byte[3];
35                 for (int n = in.read(buffer); n > 0; n = in.read(buffer)) {
36                         out_bytes.write(buffer, 0, n);
37                 }
38                 out_bytes.close();
39                 in.close();
40                 decoded = out_bytes.toByteArray();
41                 assertTrue(Arrays.equals(data, decoded));
42         }
43
44         public void testStreams() throws Exception {
45                 for (int i = 0; i < 100; ++i) {
46                         runStreamTest(i);
47                 }
48                 for (int i = 100; i < 2000; i += 250) {
49                         runStreamTest(i);
50                 }
51                 for (int i = 2000; i < 80000; i += 1000) {
52                         runStreamTest(i);
53                 }
54         }
55 }