private void verifyCompressByteBuffer(Compressor compressor, ByteBuffer expected, ByteBuffer compressed) { // attempt to compress slightly different data to ensure the compressor doesn't keep state // between calls that may affect results if (expected.remaining() > 1) { ByteBuffer duplicate = expected.duplicate(); duplicate.get(); // skip one byte compressor.compress(duplicate, ByteBuffer.allocate(compressed.remaining())); } compressor.compress(expected.duplicate(), compressed); compressed.flip(); ByteBuffer uncompressed = ByteBuffer.allocate(expected.remaining()); // TODO: validate with "control" decompressor getDecompressor().decompress(compressed, uncompressed); uncompressed.flip(); assertByteBufferEqual(expected.duplicate(), uncompressed); }
@Test(dataProvider = "data") public void testDecompressByteBufferHeapToHeap(DataSet dataSet) throws Exception { if (!isByteBufferSupported()) { return; } byte[] uncompressedOriginal = dataSet.getUncompressed(); ByteBuffer compressed = ByteBuffer.wrap(prepareCompressedData(uncompressedOriginal)); ByteBuffer uncompressed = ByteBuffer.allocate(uncompressedOriginal.length); getDecompressor().decompress(compressed, uncompressed); uncompressed.flip(); assertByteBufferEqual(ByteBuffer.wrap(uncompressedOriginal), uncompressed); }
@Test(dataProvider = "data") public void testDecompressByteBufferHeapToDirect(DataSet dataSet) throws Exception { if (!isByteBufferSupported()) { return; } byte[] uncompressedOriginal = dataSet.getUncompressed(); ByteBuffer compressed = ByteBuffer.wrap(prepareCompressedData(uncompressedOriginal)); ByteBuffer uncompressed = ByteBuffer.allocateDirect(uncompressedOriginal.length); getDecompressor().decompress(compressed, uncompressed); uncompressed.flip(); assertByteBufferEqual(ByteBuffer.wrap(uncompressedOriginal), uncompressed); }
@Test(dataProvider = "data") public void testDecompressByteBufferDirectToDirect(DataSet dataSet) throws Exception { if (!isByteBufferSupported()) { return; } byte[] uncompressedOriginal = dataSet.getUncompressed(); ByteBuffer compressed = toDirectBuffer(prepareCompressedData(uncompressedOriginal)); ByteBuffer uncompressed = ByteBuffer.allocateDirect(uncompressedOriginal.length); getDecompressor().decompress(compressed, uncompressed); uncompressed.flip(); assertByteBufferEqual(ByteBuffer.wrap(uncompressedOriginal), uncompressed); }
@Test(dataProvider = "data") public void testDecompressByteBufferDirectToHeap(DataSet dataSet) throws Exception { if (!isByteBufferSupported()) { return; } byte[] uncompressedOriginal = dataSet.getUncompressed(); ByteBuffer compressed = toDirectBuffer(prepareCompressedData(uncompressedOriginal)); ByteBuffer uncompressed = ByteBuffer.allocate(uncompressedOriginal.length); getDecompressor().decompress(compressed, uncompressed); uncompressed.flip(); assertByteBufferEqual(ByteBuffer.wrap(uncompressedOriginal), uncompressed); }