| // 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 "core/fpdfapi/page/cpdf_streamparser.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| TEST(cpdf_streamparser, ReadHexString) { |
| { |
| // Position out of bounds. |
| uint8_t data[] = "12ab>"; |
| CPDF_StreamParser parser(data); |
| parser.SetPos(6); |
| EXPECT_EQ("", parser.ReadHexString()); |
| } |
| |
| { |
| // Regular conversion. |
| uint8_t data[] = "1A2b>abcd"; |
| CPDF_StreamParser parser(data); |
| EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); |
| EXPECT_EQ(5u, parser.GetPos()); |
| } |
| |
| { |
| // Missing ending > |
| uint8_t data[] = "1A2b"; |
| CPDF_StreamParser parser(data); |
| EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); |
| EXPECT_EQ(5u, parser.GetPos()); |
| } |
| |
| { |
| // Uneven number of bytes. |
| uint8_t data[] = "1A2>asdf"; |
| CPDF_StreamParser parser(data); |
| EXPECT_EQ("\x1a\x20", parser.ReadHexString()); |
| EXPECT_EQ(4u, parser.GetPos()); |
| } |
| |
| { |
| uint8_t data[] = ">"; |
| CPDF_StreamParser parser(data); |
| EXPECT_EQ("", parser.ReadHexString()); |
| EXPECT_EQ(1u, parser.GetPos()); |
| } |
| } |