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/include/fpdfapi/fpdf_parser.h" 6 #include "testing/gtest/include/gtest/gtest.h" 7 8 TEST(fpdf_parser_decode, HexDecode) { 9 { 10 // Empty src string. 11 uint8_t* dest = nullptr; 12 FX_DWORD dest_size; 13 uint8_t src[] = ""; 14 EXPECT_EQ(0, HexDecode(src, 0, dest, dest_size)); 15 EXPECT_EQ(0, dest_size); 16 EXPECT_EQ('\0', dest[0]); 17 FX_Free(dest); 18 } 19 20 { 21 // Regular conversion. 22 uint8_t* dest = nullptr; 23 FX_DWORD dest_size; 24 uint8_t src[] = "12Ac>zzz"; 25 EXPECT_EQ(5, HexDecode(src, 8, dest, dest_size)); 26 EXPECT_EQ(2, dest_size); 27 EXPECT_EQ(18, dest[0]); 28 EXPECT_EQ(172, dest[1]); 29 FX_Free(dest); 30 } 31 32 { 33 // Non-multiple length. 34 uint8_t* dest = nullptr; 35 FX_DWORD dest_size; 36 uint8_t src[] = "12A>zzz"; 37 EXPECT_EQ(4, HexDecode(src, 8, dest, dest_size)); 38 EXPECT_EQ(2, dest_size); 39 EXPECT_EQ(18, dest[0]); 40 EXPECT_EQ(160, dest[1]); 41 FX_Free(dest); 42 } 43 44 { 45 // Skips unknown characters. 46 uint8_t* dest = nullptr; 47 FX_DWORD dest_size; 48 uint8_t src[] = "12tk \tAc>zzz"; 49 EXPECT_EQ(10, HexDecode(src, 13, dest, dest_size)); 50 EXPECT_EQ(2, dest_size); 51 EXPECT_EQ(18, dest[0]); 52 EXPECT_EQ(172, dest[1]); 53 FX_Free(dest); 54 } 55 } 56