From b45182122d4cade92d1dfddb6b278978c09475af Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Mon, 2 Nov 2015 16:44:09 -0500 Subject: 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 . --- .../fpdf_page/fpdf_page_parser_old_unittest.cpp | 48 ++++++++++++++++++++++ core/src/fpdfapi/fpdf_page/pageint.h | 6 +++ 2 files changed, 54 insertions(+) create mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp (limited to 'core') 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 #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(); -- cgit v1.2.3