48bool compare(
const DataContainerT& container, std::size_t bitwidth,
const DeflatedDataT& targetBuffer)
50 unsigned wordcount = 0;
51 auto bufferWord = targetBuffer[wordcount];
52 using target_type =
typename DeflatedDataT::value_type;
53 auto targetWidth = 8 *
sizeof(target_type);
54 int position = targetWidth;
55 for (
const auto c : container) {
60 BOOST_REQUIRE(wordcount < targetBuffer.size());
61 position = targetWidth;
62 bufferWord = targetBuffer[wordcount];
65 if (comparing > position) {
68 position -= comparing;
69 target_type
mask = ((target_type)1 << comparing) - 1;
70 if (((bufferWord >> position) &
mask) != ((
c >> (
length - comparing)) &
mask)) {
71 std::cout <<
"Decoding error at wordcount: " << wordcount << std::endl
72 <<
" length: " <<
length << std::endl
73 <<
" comparing: " << comparing << std::endl
74 <<
" position: " << position << std::endl
75 <<
" mask: " << std::hex <<
mask << std::endl
77 <<
" bufferWord: " << std::hex << bufferWord << std::endl
78 <<
" c: " << std::hex <<
c << std::endl;
81 BOOST_REQUIRE(((bufferWord >> position) &
mask) == ((
c >> (
length - comparing)) &
mask));
93 TestDataDeflater deflater;
95 using target_type = TestDataDeflater::target_type;
96 std::vector<target_type> targetBuffer;
97 auto writerfct = [&](
const target_type&
value) ->
bool {
98 targetBuffer.emplace_back(
value);
102 std::array<char, 8>
data = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f'};
104 const auto bitwidth = 7;
105 for (
auto c :
data) {
106 deflater.
writeRaw(
c, bitwidth, writerfct);
108 deflater.close(writerfct);
114 constexpr auto bitwidth = 7;
117 using target_type = TestDataDeflater::target_type;
118 TestDataDeflater deflater;
120 std::vector<target_type> targetBuffer;
121 auto writerfct = [&](
const target_type&
value) ->
bool {
122 targetBuffer.emplace_back(
value);
126 std::array<char, 8>
data = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f'};
128 for (
auto c :
data) {
129 deflater.
write(
c, writerfct);
131 deflater.close(writerfct);
165 using target_type = TestDataDeflater::target_type;
166 TestDataDeflater deflater;
168 std::vector<target_type> targetBuffer;
169 auto writerfct = [&](
const target_type&
value) ->
bool {
170 targetBuffer.emplace_back(
value);
174 std::array<char, 8>
data = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f'};
176 for (
auto c :
data) {
177 deflater.
write(
c, writerfct);
179 deflater.close(writerfct);