diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2015-11-02 16:44:09 -0500 |
---|---|---|
committer | Dan Sinclair <dsinclair@chromium.org> | 2015-11-02 16:44:09 -0500 |
commit | b45182122d4cade92d1dfddb6b278978c09475af (patch) | |
tree | b6d0b02bb49ac84bb86b751d328bb8c37006c6d4 /core | |
parent | f0e2e1b09cf1ce0e537888a99f04be6f10edcada (diff) | |
download | pdfium-b45182122d4cade92d1dfddb6b278978c09475af.tar.xz |
Merget to XFA: Add test for CPDF_StreamParser::ReadHexString.
This CL adds a unit test for the ReadHexString method.
TBR=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1408213008 .
(cherry picked from commit c89c6195373b63e99b9cd432c5a181bfb3ad8dbe)
Review URL: https://codereview.chromium.org/1417713003 .
Diffstat (limited to 'core')
-rw-r--r-- | core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp | 48 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_page/pageint.h | 6 |
2 files changed, 54 insertions, 0 deletions
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp new file mode 100644 index 0000000000..3fc012f29c --- /dev/null +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp @@ -0,0 +1,48 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/gtest/include/gtest/gtest.h" + +#include "pageint.h" + +TEST(fpdf_page_parser_old, ReadHexString) { + { + // Position out of bounds. + uint8_t data[] = "12ab>"; + CPDF_StreamParser parser(data, 5); + parser.SetPos(6); + EXPECT_EQ("", parser.ReadHexString()); + } + + { + // Regular conversion. + uint8_t data[] = "1A2b>abcd"; + CPDF_StreamParser parser(data, 5); + EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); + EXPECT_EQ(5, parser.GetPos()); + } + + { + // Missing ending > + uint8_t data[] = "1A2b"; + CPDF_StreamParser parser(data, 5); + EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); + EXPECT_EQ(5, parser.GetPos()); + } + + { + // Uneven number of bytes. + uint8_t data[] = "1A2>asdf"; + CPDF_StreamParser parser(data, 5); + EXPECT_EQ("\x1a\x20", parser.ReadHexString()); + EXPECT_EQ(4, parser.GetPos()); + } + + { + uint8_t data[] = ">"; + CPDF_StreamParser parser(data, 5); + EXPECT_EQ("", parser.ReadHexString()); + EXPECT_EQ(1, parser.GetPos()); + } +} diff --git a/core/src/fpdfapi/fpdf_page/pageint.h b/core/src/fpdfapi/fpdf_page/pageint.h index 1b41633346..e787d6973a 100644 --- a/core/src/fpdfapi/fpdf_page/pageint.h +++ b/core/src/fpdfapi/fpdf_page/pageint.h @@ -10,8 +10,12 @@ #include <map> #include "../../../../third_party/base/nonstd_unique_ptr.h" +#include "../../../include/fpdfapi/fpdf_page.h" #include "../../../include/fpdfapi/fpdf_pageobj.h" +class CPDF_AllStates; +class CPDF_ParseOptions; + #define PARSE_STEP_LIMIT 100 class CPDF_StreamParser { @@ -41,6 +45,8 @@ class CPDF_StreamParser { void SkipPathObject(); protected: + friend class fpdf_page_parser_old_ReadHexString_Test; + void GetNextWord(FX_BOOL& bIsNumber); CFX_ByteString ReadString(); CFX_ByteString ReadHexString(); |