package net.i2p.util; /* * free (adj.): unencumbered; not under the control of others * Written by jrandom in 2003 and released into the public domain * with no warranty of any kind, either expressed or implied. * It probably won't make your computer catch on fire, or eat * your children, but it might. Use at your own risk. * */ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.zip.GZIPOutputStream; import junit.framework.TestCase; import net.i2p.data.DataHelper; public class ResettableGZIPInputStreamTest extends TestCase { public void testResettableGZIPInputStream() throws Exception{ for (int size = 129; size < 64*1024; size+=100) { byte b[] = new byte[size]; new java.util.Random().nextBytes(b); ByteArrayOutputStream baos = new ByteArrayOutputStream(size); GZIPOutputStream o = new GZIPOutputStream(baos); o.write(b); o.finish(); o.flush(); byte compressed[] = baos.toByteArray(); ResettableGZIPInputStream in = new ResettableGZIPInputStream(new ByteArrayInputStream(compressed)); ByteArrayOutputStream baos2 = new ByteArrayOutputStream(size); byte rbuf[] = new byte[512]; while (true) { int read = in.read(rbuf); if (read == -1) break; baos2.write(rbuf, 0, read); } byte rv[] = baos2.toByteArray(); assertEquals(rv.length,b.length); assertTrue(DataHelper.eq(rv, 0, b, 0, b.length)); } byte orig[] = DataHelper.getASCII("ho ho ho, merry christmas"); ByteArrayOutputStream baos = new ByteArrayOutputStream(64); GZIPOutputStream o = new GZIPOutputStream(baos); o.write(orig); o.finish(); o.flush(); o.close(); byte compressed[] = baos.toByteArray(); ResettableGZIPInputStream i = new ResettableGZIPInputStream(); i.initialize(new ByteArrayInputStream(compressed)); byte readBuf[] = new byte[128]; int read = i.read(readBuf); assertEquals(read,orig.length); for (int j = 0; j < read; j++) assertEquals(readBuf[j],orig[j]); assertEquals(-1,i.read()); } }