aboutsummaryrefslogtreecommitdiff
path: root/core/fxcodec/basic/rle_unittest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcodec/basic/rle_unittest.cpp')
-rw-r--r--core/fxcodec/basic/rle_unittest.cpp77
1 files changed, 26 insertions, 51 deletions
diff --git a/core/fxcodec/basic/rle_unittest.cpp b/core/fxcodec/basic/rle_unittest.cpp
index 047b44763..7f81b37f2 100644
--- a/core/fxcodec/basic/rle_unittest.cpp
+++ b/core/fxcodec/basic/rle_unittest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
+// Copyright 2016 The PDFium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -9,47 +9,34 @@
#include "core/fpdfapi/parser/fpdf_parser_decode.h"
#include "core/fxcodec/basic/basicmodule.h"
-#include "core/fxcrt/fx_memory_wrappers.h"
+#include "core/fxcrt/data_vector.h"
#include "testing/gtest/include/gtest/gtest.h"
-TEST(fxcodec, RLETestBadInputs) {
- const uint8_t src_buf[] = {1};
- std::unique_ptr<uint8_t, FxFreeDeleter> dest_buf;
- uint32_t dest_size = 0;
-
- // Error codes, not segvs, should callers pass us a nullptr pointer.
- EXPECT_FALSE(BasicModule::RunLengthEncode(src_buf, &dest_buf, nullptr));
- EXPECT_FALSE(BasicModule::RunLengthEncode(src_buf, nullptr, &dest_size));
- EXPECT_FALSE(BasicModule::RunLengthEncode({}, &dest_buf, &dest_size));
+TEST(fxcodec, RLEEmptyInput) {
+ EXPECT_TRUE(BasicModule::RunLengthEncode({}).empty());
}
// Check length 1 input works. Check terminating character is applied.
-TEST(fxcodec, RLETestShortInput) {
+TEST(fxcodec, RLEShortInput) {
const uint8_t src_buf[] = {1};
- std::unique_ptr<uint8_t, FxFreeDeleter> dest_buf;
- uint32_t dest_size = 0;
-
- EXPECT_TRUE(BasicModule::RunLengthEncode(src_buf, &dest_buf, &dest_size));
- ASSERT_EQ(3u, dest_size);
- auto dest_buf_span = pdfium::make_span(dest_buf.get(), dest_size);
- EXPECT_EQ(0, dest_buf_span[0]);
- EXPECT_EQ(1, dest_buf_span[1]);
- EXPECT_EQ(128, dest_buf_span[2]);
+ DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf);
+ ASSERT_EQ(3u, dest_buf.size());
+ EXPECT_EQ(0, dest_buf[0]);
+ EXPECT_EQ(1, dest_buf[1]);
+ EXPECT_EQ(128, dest_buf[2]);
}
// Check a few basic cases (2 matching runs in a row, matching run followed
// by a non-matching run, and non-matching run followed by a matching run).
-TEST(fxcodec, RLETestNormalInputs) {
- std::unique_ptr<uint8_t, FxFreeDeleter> dest_buf;
- uint32_t dest_size = 0;
+TEST(fxcodec, RLENormalInputs) {
std::unique_ptr<uint8_t, FxFreeDeleter> decoded_buf;
uint32_t decoded_size = 0;
{
// Case 1: Match, match
const uint8_t src_buf_1[] = {2, 2, 2, 2, 4, 4, 4, 4, 4, 4};
- EXPECT_TRUE(BasicModule::RunLengthEncode(src_buf_1, &dest_buf, &dest_size));
- RunLengthDecode({dest_buf.get(), dest_size}, &decoded_buf, &decoded_size);
+ DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_1);
+ RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
ASSERT_EQ(sizeof(src_buf_1), decoded_size);
auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
for (uint32_t i = 0; i < decoded_size; i++)
@@ -59,12 +46,10 @@ TEST(fxcodec, RLETestNormalInputs) {
{
// Case 2: Match, non-match
const uint8_t src_buf_2[] = {2, 2, 2, 2, 1, 2, 3, 4, 5, 6};
- dest_buf.reset();
- dest_size = 0;
- EXPECT_TRUE(BasicModule::RunLengthEncode(src_buf_2, &dest_buf, &dest_size));
+ DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_2);
decoded_buf.reset();
decoded_size = 0;
- RunLengthDecode({dest_buf.get(), dest_size}, &decoded_buf, &decoded_size);
+ RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
ASSERT_EQ(sizeof(src_buf_2), decoded_size);
auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
for (uint32_t i = 0; i < decoded_size; i++)
@@ -74,12 +59,10 @@ TEST(fxcodec, RLETestNormalInputs) {
{
// Case 3: Non-match, match
const uint8_t src_buf_3[] = {1, 2, 3, 4, 5, 3, 3, 3, 3, 3};
- dest_buf.reset();
- dest_size = 0;
- EXPECT_TRUE(BasicModule::RunLengthEncode(src_buf_3, &dest_buf, &dest_size));
+ DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_3);
decoded_buf.reset();
decoded_size = 0;
- RunLengthDecode({dest_buf.get(), dest_size}, &decoded_buf, &decoded_size);
+ RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
ASSERT_EQ(sizeof(src_buf_3), decoded_size);
auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
for (uint32_t i = 0; i < decoded_size; i++)
@@ -89,17 +72,15 @@ TEST(fxcodec, RLETestNormalInputs) {
// Check that runs longer than 128 are broken up properly, both matched and
// non-matched.
-TEST(fxcodec, RLETestFullLengthInputs) {
- std::unique_ptr<uint8_t, FxFreeDeleter> dest_buf;
- uint32_t dest_size = 0;
+TEST(fxcodec, RLEFullLengthInputs) {
std::unique_ptr<uint8_t, FxFreeDeleter> decoded_buf;
uint32_t decoded_size = 0;
{
// Case 1: Match, match
const uint8_t src_buf_1[260] = {1};
- EXPECT_TRUE(BasicModule::RunLengthEncode(src_buf_1, &dest_buf, &dest_size));
- RunLengthDecode({dest_buf.get(), dest_size}, &decoded_buf, &decoded_size);
+ DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_1);
+ RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
ASSERT_EQ(sizeof(src_buf_1), decoded_size);
auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
for (uint32_t i = 0; i < decoded_size; i++)
@@ -111,12 +92,10 @@ TEST(fxcodec, RLETestFullLengthInputs) {
uint8_t src_buf_2[260] = {2};
for (uint16_t i = 128; i < 260; i++)
src_buf_2[i] = static_cast<uint8_t>(i - 125);
- dest_buf.reset();
- dest_size = 0;
- EXPECT_TRUE(BasicModule::RunLengthEncode(src_buf_2, &dest_buf, &dest_size));
+ DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_2);
decoded_buf.reset();
decoded_size = 0;
- RunLengthDecode({dest_buf.get(), dest_size}, &decoded_buf, &decoded_size);
+ RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
ASSERT_EQ(sizeof(src_buf_2), decoded_size);
auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
for (uint32_t i = 0; i < decoded_size; i++)
@@ -128,12 +107,10 @@ TEST(fxcodec, RLETestFullLengthInputs) {
uint8_t src_buf_3[260] = {3};
for (uint8_t i = 0; i < 128; i++)
src_buf_3[i] = i;
- dest_buf.reset();
- dest_size = 0;
- EXPECT_TRUE(BasicModule::RunLengthEncode(src_buf_3, &dest_buf, &dest_size));
+ DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_3);
decoded_buf.reset();
decoded_size = 0;
- RunLengthDecode({dest_buf.get(), dest_size}, &decoded_buf, &decoded_size);
+ RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
ASSERT_EQ(sizeof(src_buf_3), decoded_size);
auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
for (uint32_t i = 0; i < decoded_size; i++)
@@ -145,12 +122,10 @@ TEST(fxcodec, RLETestFullLengthInputs) {
uint8_t src_buf_4[260];
for (uint16_t i = 0; i < 260; i++)
src_buf_4[i] = static_cast<uint8_t>(i);
- dest_buf.reset();
- dest_size = 0;
- EXPECT_TRUE(BasicModule::RunLengthEncode(src_buf_4, &dest_buf, &dest_size));
+ DataVector<uint8_t> dest_buf = BasicModule::RunLengthEncode(src_buf_4);
decoded_buf.reset();
decoded_size = 0;
- RunLengthDecode({dest_buf.get(), dest_size}, &decoded_buf, &decoded_size);
+ RunLengthDecode(dest_buf, &decoded_buf, &decoded_size);
ASSERT_EQ(sizeof(src_buf_4), decoded_size);
auto decoded_buf_span = pdfium::make_span(decoded_buf.get(), decoded_size);
for (uint32_t i = 0; i < decoded_size; i++)