Fix build broken at 506df426d5d6.
[pdfium.git] / fpdfsdk / src / fpdfdoc_embeddertest.cpp
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 "../../public/fpdf_doc.h"
6 #include "../../public/fpdfview.h"
7 #include "../../testing/embedder_test.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 class FPDFDocEmbeddertest : public EmbedderTest {};
11
12 TEST_F(FPDFDocEmbeddertest, DestGetPageIndex) {
13   EXPECT_TRUE(OpenDocument("testing/resources/named_dests.pdf"));
14
15   // NULL FPDF_DEST case.
16   EXPECT_EQ(0U, FPDFDest_GetPageIndex(document(), nullptr));
17
18   // Page number directly in item from Dests NameTree.
19   FPDF_DEST dest = FPDF_GetNamedDestByName(document(), "First");
20   EXPECT_NE(nullptr, dest);
21   EXPECT_EQ(1U, FPDFDest_GetPageIndex(document(), dest));
22
23   // Page number via object reference in item from Dests NameTree.
24   dest = FPDF_GetNamedDestByName(document(), "Next");
25   EXPECT_NE(nullptr, dest);
26   EXPECT_EQ(1U, FPDFDest_GetPageIndex(document(), dest));
27
28   // Page number directly in item from Dests dictionary.
29   dest = FPDF_GetNamedDestByName(document(), "FirstAlternate");
30   EXPECT_NE(nullptr, dest);
31   EXPECT_EQ(11U, FPDFDest_GetPageIndex(document(), dest));
32
33   // Invalid object reference in item from Dests NameTree.
34   dest = FPDF_GetNamedDestByName(document(), "LastAlternate");
35   EXPECT_NE(nullptr, dest);
36   EXPECT_EQ(0U, FPDFDest_GetPageIndex(document(), dest));
37 }
38
39 TEST_F(FPDFDocEmbeddertest, ActionGetFilePath) {
40   EXPECT_TRUE(OpenDocument("testing/resources/launch_action.pdf"));
41
42   FPDF_PAGE page = FPDF_LoadPage(document(), 0);
43   ASSERT_TRUE(page);
44
45   // The target action is nearly the size of the whole page.
46   FPDF_LINK link = FPDFLink_GetLinkAtPoint(page, 100, 100);
47   ASSERT_TRUE(link);
48
49   FPDF_ACTION action = FPDFLink_GetAction(link);
50   ASSERT_TRUE(action);
51
52   const char kExpectedResult[] = "test.pdf";
53   const unsigned long kExpectedLength = sizeof(kExpectedResult);
54   unsigned long bufsize = FPDFAction_GetFilePath(action, nullptr, 0);
55   ASSERT_EQ(kExpectedLength, bufsize);
56
57   char buf[kExpectedLength];
58   EXPECT_EQ(bufsize, FPDFAction_GetFilePath(action, buf, bufsize));
59   EXPECT_EQ(std::string(kExpectedResult), std::string(buf));
60
61   FPDF_ClosePage(page);
62 }