1 36 package org.columba.ristretto.coder; 37 38 import java.io.ByteArrayInputStream ; 39 import java.io.IOException ; 40 import java.io.InputStream ; 41 import java.util.Random ; 42 43 import junit.framework.TestCase; 44 45 import org.columba.ristretto.io.CharSequenceSource; 46 import org.columba.ristretto.io.SourceInputStream; 47 48 public class Base64DecoderInputStreamTest extends TestCase { 49 50 54 public Base64DecoderInputStreamTest(String arg0) { 55 super(arg0); 56 } 57 58 public void test0Pads() { 59 String input = "/4BA/4BA"; 60 CharSequenceSource source = new CharSequenceSource( input ); 61 Base64DecoderInputStream base64in= new Base64DecoderInputStream( new SourceInputStream(source)); 62 int[] result = { 0x0ff, 0x080, 0x040, 0x0ff, 0x080, 0x040 }; 63 int pos = 0; 64 65 try { 66 int nextIn = base64in.read(); 67 while( nextIn != -1 ) { 68 assertTrue( nextIn == result[pos++]); 69 nextIn = base64in.read(); 70 } 71 } catch (IOException e) { 72 e.printStackTrace(); 73 } 74 75 assertTrue( pos == 6 ); 76 } 77 78 public void test1Pads() { 79 String input = "/4BA/4A="; 80 CharSequenceSource source = new CharSequenceSource( input ); 81 Base64DecoderInputStream base64in= new Base64DecoderInputStream( new SourceInputStream(source)); 82 int[] result = { 0x0ff, 0x080, 0x040, 0x0ff, 0x080, 0x040 }; 83 int pos = 0; 84 85 try { 86 int nextIn = base64in.read(); 87 while( nextIn != -1 ) { 88 assertTrue( nextIn == result[pos++]); 89 nextIn = base64in.read(); 90 } 91 } catch (IOException e) { 92 e.printStackTrace(); 93 } 94 95 assertTrue( pos == 5 ); 96 } 97 98 99 public void test2Pads() { 100 String input = "/4BA/w=="; 101 CharSequenceSource source = new CharSequenceSource( input ); 102 Base64DecoderInputStream base64in= new Base64DecoderInputStream( new SourceInputStream(source)); 103 int[] result = { 0x0ff, 0x080, 0x040, 0x0ff, 0x080, 0x040 }; 104 int pos = 0; 105 106 try { 107 int nextIn = base64in.read(); 108 while( nextIn != -1 ) { 109 assertTrue( nextIn == result[pos++]); 110 nextIn = base64in.read(); 111 } 112 } catch (IOException e) { 113 e.printStackTrace(); 114 } 115 116 assertTrue( pos == 4 ); 117 } 118 119 120 public void testBreak() { 121 String input = "/4B\nA/4\r\nBA"; 122 CharSequenceSource source = new CharSequenceSource( input ); 123 Base64DecoderInputStream base64in= new Base64DecoderInputStream( new SourceInputStream(source)); 124 int[] result = { 0x0ff, 0x080, 0x040, 0x0ff, 0x080, 0x040 }; 125 int pos = 0; 126 127 try { 128 int nextIn = base64in.read(); 129 while( nextIn != -1 ) { 130 assertTrue( nextIn == result[pos++]); 131 nextIn = base64in.read(); 132 } 133 } catch (IOException e) { 134 e.printStackTrace(); 135 } 136 137 assertTrue( pos == 6 ); 138 } 139 140 public void testencodedecode() { 141 Random random = new Random (); 142 byte[] testInput = new byte[(int) (random.nextFloat() * 1024)]; 143 random.nextBytes(testInput); 144 InputStream in = new Base64DecoderInputStream( new Base64EncoderInputStream( new ByteArrayInputStream (testInput))); 145 try { 146 for( int i=0; i<testInput.length; i++) { 147 byte next = (byte) in.read(); 148 if(testInput[i] != next ) { 149 System.out.println( i + " " + testInput[i] + " != "+ next); 150 } 151 assertTrue(testInput[i] == next); 152 } 153 } catch (IOException e) { 154 e.printStackTrace(); 155 } 156 } 157 } 158 | Popular Tags |