TEST_F(FPDFDocEmbeddertest, NoBookmarks) { // Open a file with no bookmarks. EXPECT_TRUE(OpenDocument("named_dests.pdf")); // The non-existent top-level bookmark has no title. unsigned short buf[128]; EXPECT_EQ(0u, FPDFBookmark_GetTitle(nullptr, buf, sizeof(buf))); // The non-existent top-level bookmark has no children. EXPECT_EQ(nullptr, FPDFBookmark_GetFirstChild(document(), nullptr)); }
TEST_F(FPDFDocEmbedderTest, Bookmarks) { // Open a file with two bookmarks. EXPECT_TRUE(OpenDocument("bookmarks.pdf")); // The existent top-level bookmark has no title. unsigned short buf[128]; EXPECT_EQ(0u, FPDFBookmark_GetTitle(nullptr, buf, sizeof(buf))); FPDF_BOOKMARK child = FPDFBookmark_GetFirstChild(document(), nullptr); EXPECT_TRUE(child); EXPECT_EQ(34u, FPDFBookmark_GetTitle(child, buf, sizeof(buf))); EXPECT_EQ(WideString(L"A Good Beginning"), WideString::FromUTF16LE(buf, 16)); EXPECT_EQ(nullptr, FPDFBookmark_GetFirstChild(document(), child)); FPDF_BOOKMARK sibling = FPDFBookmark_GetNextSibling(document(), child); EXPECT_TRUE(sibling); EXPECT_EQ(28u, FPDFBookmark_GetTitle(sibling, buf, sizeof(buf))); EXPECT_EQ(WideString(L"A Good Ending"), WideString::FromUTF16LE(buf, 13)); EXPECT_EQ(nullptr, FPDFBookmark_GetNextSibling(document(), sibling)); }
TEST_F(FPDFDocEmbedderTest, NoBookmarks) { // Open a file with no bookmarks. EXPECT_TRUE(OpenDocument("named_dests.pdf")); // The non-existent top-level bookmark has no title. unsigned short buf[128]; EXPECT_EQ(0u, FPDFBookmark_GetTitle(nullptr, buf, sizeof(buf))); // NULL argument cases. EXPECT_EQ(nullptr, FPDFBookmark_GetFirstChild(nullptr, nullptr)); EXPECT_EQ(nullptr, FPDFBookmark_GetFirstChild(document(), nullptr)); EXPECT_EQ(nullptr, FPDFBookmark_GetNextSibling(nullptr, nullptr)); EXPECT_EQ(nullptr, FPDFBookmark_GetNextSibling(document(), nullptr)); EXPECT_EQ(nullptr, FPDFBookmark_Find(nullptr, nullptr)); EXPECT_EQ(nullptr, FPDFBookmark_Find(document(), nullptr)); EXPECT_EQ(nullptr, FPDFBookmark_GetDest(nullptr, nullptr)); EXPECT_EQ(nullptr, FPDFBookmark_GetDest(document(), nullptr)); EXPECT_EQ(nullptr, FPDFBookmark_GetAction(nullptr)); }
TEST_F(FPDFDocEmbedderTest, FindBookmarks) { // Open a file with two bookmarks. EXPECT_TRUE(OpenDocument("bookmarks.pdf")); // Find the first one, based on its known title. std::unique_ptr<unsigned short, pdfium::FreeDeleter> title = GetFPDFWideString(L"A Good Beginning"); FPDF_BOOKMARK child = FPDFBookmark_Find(document(), title.get()); EXPECT_TRUE(child); // Check that the string matches. unsigned short buf[128]; EXPECT_EQ(34u, FPDFBookmark_GetTitle(child, buf, sizeof(buf))); EXPECT_EQ(WideString(L"A Good Beginning"), WideString::FromUTF16LE(buf, 16)); // Check that it is them same as the one returned by GetFirstChild. EXPECT_EQ(child, FPDFBookmark_GetFirstChild(document(), nullptr)); // Try to find one using a non-existent title. std::unique_ptr<unsigned short, pdfium::FreeDeleter> bad_title = GetFPDFWideString(L"A BAD Beginning"); EXPECT_EQ(nullptr, FPDFBookmark_Find(document(), bad_title.get())); }