// 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 "../../../include/fpdfapi/fpdf_parser.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]);
  }
}
