30 uint8_t palette_exp = 0x1;
31 uint8_t code_exp = 0x2;
32 auto decompressor = LZWDecompressor::Create(palette_exp, code_exp);
33 ASSERT_NE(
nullptr, decompressor);
37 DataVector<uint8_t>* decompressed = decompressor->DecompressedForTest();
38 *decompressed = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
39 *(decompressor->DecompressedNextForTest()) = decompressed->size();
41 fxcrt::Fill(dest_buf, 0xff);
42 EXPECT_EQ(0u, decompressor->ExtractDataForTest(
43 pdfium::make_span(dest_buf).first(0u)));
44 EXPECT_THAT(dest_buf, Each(
static_cast<uint8_t>(-1)));
45 EXPECT_EQ(10u, *(decompressor->DecompressedNextForTest()));
46 for (size_t i = 0; i < *(decompressor->DecompressedNextForTest()); ++i) {
47 EXPECT_EQ(i, (*decompressed)[i]);
53 DataVector<uint8_t>* decompressed = decompressor->DecompressedForTest();
54 *decompressed = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
55 *(decompressor->DecompressedNextForTest()) = decompressed->size();
56 std::array<uint8_t, 20> dest_buf;
57 fxcrt::Fill(dest_buf, 0xff);
58 EXPECT_EQ(5u, decompressor->ExtractDataForTest(
59 pdfium::make_span(dest_buf).first(5u)));
62 EXPECT_EQ(9 - i, dest_buf[i]);
64 EXPECT_THAT(
pdfium::
span(dest_buf).first(5), ElementsAre(9, 8, 7, 6, 5));
66 Each(
static_cast<uint8_t>(-1)));
67 EXPECT_EQ(5u, *(decompressor->DecompressedNextForTest()));
68 for (i = 0; i < *(decompressor->DecompressedNextForTest()); ++i) {
69 EXPECT_EQ(i, (*decompressed)[i]);
75 DataVector<uint8_t>* decompressed = decompressor->DecompressedForTest();
76 *decompressed = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
77 *(decompressor->DecompressedNextForTest()) = decompressed->size();
79 fxcrt::Fill(dest_buf, 0xff);
80 EXPECT_EQ(10u, decompressor->ExtractDataForTest(dest_buf));
81 EXPECT_THAT(pdfium::span(dest_buf).first(10),
82 ElementsAre(9, 8, 7, 6, 5, 4, 3, 2, 1, 0));
83 EXPECT_THAT(pdfium::span(dest_buf).subspan(10),
84 Each(
static_cast<uint8_t>(-1)));
85 EXPECT_EQ(0u, *(decompressor->DecompressedNextForTest()));
134 uint8_t palette_exp = 0x0;
135 uint8_t code_exp = 0x2;
136 auto decompressor = LZWDecompressor::Create(palette_exp, code_exp);
137 ASSERT_NE(
nullptr, decompressor);
139 static constexpr uint8_t kImageData[] = {0x84, 0x8F, 0xA9, 0xCB,
140 0xED, 0x0F, 0x63, 0x2B};
141 static constexpr uint8_t kExpectedData[] = {
142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
145 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
146 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
150 0x00, 0x00, 0x00, 0x00};
151 uint8_t output_data[
std::size(kExpectedData)] = {};
152 uint32_t output_size =
std::size(output_data);
154 decompressor->SetSource(kImageData);
156 UNSAFE_TODO(decompressor->Decode(output_data, &output_size)));
158 EXPECT_EQ(
std::size(output_data), output_size);
159 EXPECT_TRUE(0 == memcmp(kExpectedData, output_data,
sizeof(kExpectedData)));
163 uint8_t palette_exp = 0x1;
164 uint8_t code_exp = 0x2;
165 auto decompressor = LZWDecompressor::Create(palette_exp, code_exp);
166 ASSERT_NE(
nullptr, decompressor);
168 static constexpr uint8_t kImageData[] = {
169 0x8C, 0x2D, 0x99, 0x87, 0x2A, 0x1C, 0xDC, 0x33, 0xA0, 0x02, 0x75,
170 0xEC, 0x95, 0xFA, 0xA8, 0xDE, 0x60, 0x8C, 0x04, 0x91, 0x4C, 0x01};
171 static constexpr uint8_t kExpectedData[] = {
172 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01,
173 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
174 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
175 0x00, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02,
176 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
177 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
178 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02,
179 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01,
180 0x01, 0x01, 0x01, 0x01};
181 uint8_t output_data[
std::size(kExpectedData)] = {};
182 uint32_t output_size =
std::size(output_data);
184 decompressor->SetSource(kImageData);
186 UNSAFE_TODO(decompressor->Decode(output_data, &output_size)));
188 EXPECT_EQ(
std::size(output_data), output_size);
189 EXPECT_TRUE(0 == memcmp(kExpectedData, output_data,
sizeof(kExpectedData)));
193 auto decompressor = LZWDecompressor::Create(0, 2);
194 ASSERT_NE(
nullptr, decompressor);
196 static constexpr uint8_t kImageData[] = {0x84, 0x6f, 0x05};
197 decompressor->SetSource(kImageData);
199 static constexpr uint8_t kExpectedScanline[] = {0x00, 0x00, 0x00, 0x00};
200 uint8_t output_data[
std::size(kExpectedScanline)];
201 fxcrt::Fill(output_data, 0xff);
202 uint32_t output_size =
std::size(output_data);
204 UNSAFE_TODO(decompressor->Decode(output_data, &output_size)));
205 EXPECT_EQ(
std::size(kExpectedScanline), output_size);
206 EXPECT_THAT(output_data, ElementsAreArray(kExpectedScanline));
208 fxcrt::Fill(output_data, 0xff);
209 output_size =
std::size(output_data);
211 UNSAFE_TODO(decompressor->Decode(output_data, &output_size)));
212 EXPECT_EQ(
std::size(kExpectedScanline), output_size);
213 EXPECT_THAT(output_data, ElementsAreArray(kExpectedScanline));
217 uint8_t palette_exp = 0x2;
219 uint8_t code_exp = 0x4;
220 auto decompressor = LZWDecompressor::Create(palette_exp, code_exp);
221 ASSERT_NE(
nullptr, decompressor);
223 static constexpr uint8_t kImageData[] = {
224 0x30, 0xC9, 0x49, 0x81, 0xBD, 0x78, 0xE8, 0xCD, 0x89, 0xFF,
225 0x60, 0x20, 0x8E, 0xE4, 0x61, 0x9E, 0xA8, 0xA1, 0xAE, 0x2C,
226 0xE2, 0xBE, 0xB0, 0x20, 0xCF, 0x74, 0x61, 0xDF, 0x78, 0x04};
228 uint8_t output_data[100] = {};
229 uint32_t output_size =
std::size(output_data);
231 decompressor->SetSource(kImageData);
233 UNSAFE_TODO(decompressor->Decode(output_data, &output_size)));