@Test public void testEmptyCompression() throws Exception { byte[] empty = new byte[0]; assertEquals(compress(empty), SnappyFramed.HEADER_BYTES); assertEquals(uncompress(SnappyFramed.HEADER_BYTES), empty); }
@Test public void testUncompressibleRange() throws Exception { int max = 128 * 1024; byte[] random = getRandom(1, max); for (int i = 1; i <= max; i += 102) { byte[] original = Arrays.copyOfRange(random, 0, i); byte[] compressed = compress(original); byte[] uncompressed = uncompress(compressed); assertEquals(uncompressed, original); // assertEquals(compressed.length, original.length + overhead); } }
@Test public void testUncompressible() throws Exception { byte[] random = getRandom(1, 5000); byte[] compressed = compress(random); byte[] uncompressed = uncompress(compressed); assertEquals(uncompressed, random); assertEquals(compressed.length, random.length + 10 + 4 + 4); // flag: uncompressed assertEquals(toInt(compressed[10]), SnappyFramed.UNCOMPRESSED_DATA_FLAG); // length: 5004 = 0x138c assertEquals(toInt(compressed[13]), 0x00); assertEquals(toInt(compressed[12]), 0x13); assertEquals(toInt(compressed[11]), 0x8c); }
@Test public void testByteForByteTestData() throws Exception { List<DataSet> dataSets = new TestingModule().dataSets(); for (DataSet dataSet : dataSets) { byte[] original = dataSet.getUncompressed(); byte[] compressed = compress(original); byte[] uncompressed = uncompress(compressed); assertEquals(uncompressed, original); } }
@Test public void testSimple() throws Exception { byte[] original = "aaaaaaaaaaaabbbbbbbaaaaaa".getBytes(Charsets.UTF_8); byte[] compressed = compress(original); byte[] uncompressed = uncompress(compressed); assertEquals(uncompressed, original); // 10 byte stream header, 4 byte block header, 4 byte crc, 19 bytes assertEquals(compressed.length, 37); // stream header assertEquals(Arrays.copyOf(compressed, 10), SnappyFramed.HEADER_BYTES); // flag: compressed assertEquals(toInt(compressed[10]), SnappyFramed.COMPRESSED_DATA_FLAG); // length: 23 = 0x000017 assertEquals(toInt(compressed[11]), 0x17); assertEquals(toInt(compressed[12]), 0x00); assertEquals(toInt(compressed[13]), 0x00); // crc32c: 0x9274cda8 assertEquals(toInt(compressed[17]), 0x92); assertEquals(toInt(compressed[16]), 0x74); assertEquals(toInt(compressed[15]), 0xCD); assertEquals(toInt(compressed[14]), 0xA8); }