20TEST(fxcodec, RLEShortInput) {
21 const uint8_t src_buf[] = {1};
22 DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf);
23 ASSERT_EQ(3u, dest_buf.size());
24 EXPECT_EQ(0, dest_buf[0]);
25 EXPECT_EQ(1, dest_buf[1]);
26 EXPECT_EQ(128, dest_buf[2]);
31TEST(fxcodec, RLENormalInputs) {
32 std::unique_ptr<uint8_t, FxFreeDeleter> decoded_buf;
33 uint32_t decoded_size = 0;
37 const uint8_t src_buf_1[] = {2, 2, 2, 2, 4, 4, 4, 4, 4, 4};
38 DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_1);
39 RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
40 ASSERT_EQ(
sizeof(src_buf_1), decoded_size);
41 auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
42 for (uint32_t i = 0; i < decoded_size; i++)
43 EXPECT_EQ(src_buf_1[i], decoded_buf_span[i]) <<
" at " << i;
48 const uint8_t src_buf_2[] = {2, 2, 2, 2, 1, 2, 3, 4, 5, 6};
49 DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_2);
52 RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
53 ASSERT_EQ(
sizeof(src_buf_2), decoded_size);
54 auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
55 for (uint32_t i = 0; i < decoded_size; i++)
56 EXPECT_EQ(src_buf_2[i], decoded_buf_span[i]) <<
" at " << i;
61 const uint8_t src_buf_3[] = {1, 2, 3, 4, 5, 3, 3, 3, 3, 3};
62 DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_3);
65 RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
66 ASSERT_EQ(
sizeof(src_buf_3), decoded_size);
67 auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
68 for (uint32_t i = 0; i < decoded_size; i++)
69 EXPECT_EQ(src_buf_3[i], decoded_buf_span[i]) <<
" at " << i;
75TEST(fxcodec, RLEFullLengthInputs) {
76 std::unique_ptr<uint8_t, FxFreeDeleter> decoded_buf;
77 uint32_t decoded_size = 0;
81 const uint8_t src_buf_1[260] = {1};
82 DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_1);
83 RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
84 ASSERT_EQ(
sizeof(src_buf_1), decoded_size);
85 auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
86 for (uint32_t i = 0; i < decoded_size; i++)
87 EXPECT_EQ(src_buf_1[i], decoded_buf_span[i]) <<
" at " << i;
92 uint8_t src_buf_2[260] = {2};
93 for (uint16_t i = 128; i < 260; i++)
94 src_buf_2[i] =
static_cast<uint8_t>(i - 125);
95 DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_2);
98 RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
99 ASSERT_EQ(
sizeof(src_buf_2), decoded_size);
100 auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
101 for (uint32_t i = 0; i < decoded_size; i++)
102 EXPECT_EQ(src_buf_2[i], decoded_buf_span[i]) <<
" at " << i;
107 uint8_t src_buf_3[260] = {3};
108 for (uint8_t i = 0; i < 128; i++)
110 DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_3);
113 RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
114 ASSERT_EQ(
sizeof(src_buf_3), decoded_size);
115 auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
116 for (uint32_t i = 0; i < decoded_size; i++)
117 EXPECT_EQ(src_buf_3[i], decoded_buf_span[i]) <<
" at " << i;
122 uint8_t src_buf_4[260];
123 for (uint16_t i = 0; i < 260; i++)
124 src_buf_4[i] =
static_cast<uint8_t>(i);
125 DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_4);
128 RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
129 ASSERT_EQ(
sizeof(src_buf_4), decoded_size);
130 auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
131 for (uint32_t i = 0; i < decoded_size; i++)
132 EXPECT_EQ(src_buf_4[i], decoded_buf_span[i]) <<
" at " << i;