diff options
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(); |