diff options
Diffstat (limited to 'core/fxcodec/basic/rle_unittest.cpp')
-rw-r--r-- | core/fxcodec/basic/rle_unittest.cpp | 77 |
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++) |