Home | History | Annotate | Download | only in page
      1 // Copyright 2015 PDFium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "core/fpdfapi/page/cpdf_streamparser.h"
      6 #include "testing/gtest/include/gtest/gtest.h"
      7 
      8 TEST(cpdf_streamparser, ReadHexString) {
      9   {
     10     // Position out of bounds.
     11     uint8_t data[] = "12ab>";
     12     CPDF_StreamParser parser(data, 5);
     13     parser.SetPos(6);
     14     EXPECT_EQ("", parser.ReadHexString());
     15   }
     16 
     17   {
     18     // Regular conversion.
     19     uint8_t data[] = "1A2b>abcd";
     20     CPDF_StreamParser parser(data, 5);
     21     EXPECT_EQ("\x1a\x2b", parser.ReadHexString());
     22     EXPECT_EQ(5u, parser.GetPos());
     23   }
     24 
     25   {
     26     // Missing ending >
     27     uint8_t data[] = "1A2b";
     28     CPDF_StreamParser parser(data, 5);
     29     EXPECT_EQ("\x1a\x2b", parser.ReadHexString());
     30     EXPECT_EQ(5u, parser.GetPos());
     31   }
     32 
     33   {
     34     // Uneven number of bytes.
     35     uint8_t data[] = "1A2>asdf";
     36     CPDF_StreamParser parser(data, 5);
     37     EXPECT_EQ("\x1a\x20", parser.ReadHexString());
     38     EXPECT_EQ(4u, parser.GetPos());
     39   }
     40 
     41   {
     42     uint8_t data[] = ">";
     43     CPDF_StreamParser parser(data, 5);
     44     EXPECT_EQ("", parser.ReadHexString());
     45     EXPECT_EQ(1u, parser.GetPos());
     46   }
     47 }
     48