diff options
Diffstat (limited to 'core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp')
-rw-r--r-- | core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp b/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp index bf2fd6d10f..e95a4cc595 100644 --- a/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp +++ b/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp @@ -11,13 +11,13 @@ #include "testing/gtest/include/gtest/gtest.h" #include "testing/test_support.h" -class FPDFParserDecodeEmbeddertest : public EmbedderTest {}; +using FPDFParserDecodeEmbeddertest = EmbedderTest; // NOTE: python's zlib.compress() and zlib.decompress() may be useful for // external validation of the FlateEncode/FlateDecode test cases. TEST_F(FPDFParserDecodeEmbeddertest, FlateEncode) { - pdfium::StrFuncTestData flate_encode_cases[] = { + static const pdfium::StrFuncTestData flate_encode_cases[] = { STR_IN_OUT_CASE("", "\x78\x9c\x03\x00\x00\x00\x00\x01"), STR_IN_OUT_CASE(" ", "\x78\x9c\x53\x00\x00\x00\x21\x00\x21"), STR_IN_OUT_CASE("123", "\x78\x9c\x33\x34\x32\x06\x00\01\x2d\x00\x97"), @@ -37,18 +37,20 @@ TEST_F(FPDFParserDecodeEmbeddertest, FlateEncode) { for (size_t i = 0; i < FX_ArraySize(flate_encode_cases); ++i) { const pdfium::StrFuncTestData& data = flate_encode_cases[i]; unsigned char* buf = nullptr; - unsigned int buf_size; + uint32_t buf_size; EXPECT_TRUE(FlateEncode(data.input, data.input_size, &buf, &buf_size)); ASSERT_TRUE(buf); - EXPECT_EQ(std::string((const char*)data.expected, data.expected_size), - std::string((const char*)buf, buf_size)) + EXPECT_EQ(data.expected_size, buf_size) << " for case " << i; + if (data.expected_size != buf_size) + continue; + EXPECT_EQ(0, memcmp(data.expected, buf, data.expected_size)) << " for case " << i; FX_Free(buf); } } TEST_F(FPDFParserDecodeEmbeddertest, FlateDecode) { - pdfium::DecodeTestData flate_decode_cases[] = { + static const pdfium::DecodeTestData flate_decode_cases[] = { STR_IN_OUT_CASE("", "", 0), STR_IN_OUT_CASE("preposterous nonsense", "", 2), STR_IN_OUT_CASE("\x78\x9c\x03\x00\x00\x00\x00\x01", "", 8), @@ -71,16 +73,18 @@ TEST_F(FPDFParserDecodeEmbeddertest, FlateDecode) { for (size_t i = 0; i < FX_ArraySize(flate_decode_cases); ++i) { const pdfium::DecodeTestData& data = flate_decode_cases[i]; - unsigned char* result = nullptr; - unsigned int result_size; + unsigned char* buf = nullptr; + uint32_t buf_size; EXPECT_EQ(data.processed_size, - FlateDecode(data.input, data.input_size, &result, &result_size)) + FlateDecode(data.input, data.input_size, &buf, &buf_size)) << " for case " << i; - ASSERT_TRUE(result); - EXPECT_EQ(std::string((const char*)data.expected, data.expected_size), - std::string((const char*)result, result_size)) + ASSERT_TRUE(buf); + EXPECT_EQ(data.expected_size, buf_size) << " for case " << i; + if (data.expected_size != buf_size) + continue; + EXPECT_EQ(0, memcmp(data.expected, buf, data.expected_size)) << " for case " << i; - FX_Free(result); + FX_Free(buf); } } |