// 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/include/fpdfapi/fpdf_parser.h"
#include "testing/gtest/include/gtest/gtest.h"

TEST(fpdf_parser_decode, HexDecode) {
  {
    // Empty src string.
    uint8_t* dest = nullptr;
    FX_DWORD dest_size;
    uint8_t src[] = "";
    EXPECT_EQ(0, HexDecode(src, 0, dest, dest_size));
    EXPECT_EQ(0, dest_size);
    EXPECT_EQ('\0', dest[0]);
  }

  {
    // Regular conversion.
    uint8_t* dest = nullptr;
    FX_DWORD dest_size;
    uint8_t src[] = "12Ac>zzz";
    EXPECT_EQ(5, HexDecode(src, 8, dest, dest_size));
    EXPECT_EQ(2, dest_size);
    EXPECT_EQ(18, dest[0]);
    EXPECT_EQ(172, dest[1]);
  }

  {
    // Non-multiple length.
    uint8_t* dest = nullptr;
    FX_DWORD dest_size;
    uint8_t src[] = "12A>zzz";
    EXPECT_EQ(4, HexDecode(src, 8, dest, dest_size));
    EXPECT_EQ(2, dest_size);
    EXPECT_EQ(18, dest[0]);
    EXPECT_EQ(160, dest[1]);
  }

  {
    // Skips unknown characters.
    uint8_t* dest = nullptr;
    FX_DWORD dest_size;
    uint8_t src[] = "12tk  \tAc>zzz";
    EXPECT_EQ(10, HexDecode(src, 13, dest, dest_size));
    EXPECT_EQ(2, dest_size);
    EXPECT_EQ(18, dest[0]);
    EXPECT_EQ(172, dest[1]);
  }
}
