#include "gtest/gtest.h" #include "buffer_config.hpp" #include "bitshuffle/bitshuffle.h" using namespace std; TEST(bitshuffle, simple_compression) { auto size = MODULE_N_PIXELS; auto elem_size = 2; // uint16_t auto block_size = MODULE_N_PIXELS; auto compress_buffer_size = bshuf_compress_lz4_bound( size, elem_size, block_size); auto frame_buffer = make_unique(MODULE_N_PIXELS); auto compress_buffer = make_unique(compress_buffer_size); for (size_t i=0; i 0); auto out_frame_buffer = make_unique(MODULE_N_PIXELS); auto consumed_bytes = bshuf_decompress_lz4( compress_buffer.get(), out_frame_buffer.get(), size, elem_size, block_size); ASSERT_TRUE(consumed_bytes > 0); ASSERT_EQ(compressed_size, consumed_bytes); for (size_t i=0; i(MODULE_N_PIXELS); // Set specific values to pixels and compress each chunk individually. auto compress_buffer_1 = make_unique(compress_buffer_size); for (size_t i=0; i 0); auto compress_buffer_2 = make_unique(compress_buffer_size); for (size_t i=0; i 0); // Allocate common compression buffer to concat them together. auto sum_compressed_size = compressed_size_1 + compressed_size_2; auto sum_compressed_buffer = make_unique(sum_compressed_size); // Concat the 2 buffers one after the other. memcpy( &(sum_compressed_buffer[0]), &(compress_buffer_1[0]), compressed_size_1); memcpy( &(sum_compressed_buffer[compressed_size_1]), &(compress_buffer_2[0]), compressed_size_2); // Verify that the memcpy was correct. for (size_t i=0; i(MODULE_N_PIXELS*2); auto consumed_bytes = bshuf_decompress_lz4( sum_compressed_buffer.get(), out_frame_buffer.get(), size*2, elem_size, block_size); ASSERT_EQ(consumed_bytes, sum_compressed_size); // Verify that concat output buffer has correct specific values. for (size_t i=0;i