@Test public void testReadAndWrite() throws Exception { byte[] fluff = constructFluff(132000); byte[] comp = LZFEncoder.encode(fluff); ByteArrayOutputStream bytes = new ByteArrayOutputStream(fluff.length); LZFInputStream in = new LZFInputStream(new ByteArrayInputStream(comp)); in.readAndWrite(bytes); in.close(); byte[] actual = bytes.toByteArray(); Assert.assertEquals(actual.length, fluff.length); Assert.assertEquals(actual, fluff); }
// Mostly for [Issue#19] @Test public void testLongSkips() throws Exception { // 64k per block, 200k gives 3 full, one small byte[] fluff = constructFluff(200000); byte[] comp = LZFEncoder.encode(fluff); // we get about 200k, maybe byte or two more, so: final int LENGTH = fluff.length; LZFInputStream in = new LZFInputStream(new ByteArrayInputStream(comp)); // read one byte for fun Assert.assertEquals(in.read(), fluff[0] & 0xFF); // then skip all but one long amt = in.skip(LENGTH - 2); Assert.assertEquals(amt, (long) (LENGTH - 2)); Assert.assertEquals(in.read(), fluff[LENGTH - 1] & 0xFF); Assert.assertEquals(in.read(), -1); in.close(); }
@Test public void testAvailable() throws IOException { ByteArrayInputStream bis = new ByteArrayInputStream(compressedBytes); LZFInputStream is = new LZFInputStream(bis); Assert.assertSame(is.getUnderlyingInputStream(), bis); Assert.assertEquals(0, is.available()); // read one byte; should decode bunch more, make available is.read(); int total = 1; // since we read one byte already Assert.assertEquals(is.available(), 65534); // and after we skip through all of it, end with -1 for EOF long count; while ((count = is.skip(16384L)) > 0L) { total += (int) count; } // nothing more available; but we haven't yet closed so: Assert.assertEquals(is.available(), 0); // and then we close it: is.close(); Assert.assertEquals(is.available(), 0); Assert.assertEquals(total, compressableInputLength); }