• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016 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_ppo.h"
6 
7 #include "core/fxcrt/fx_basic.h"
8 #include "public/fpdf_edit.h"
9 #include "public/fpdfview.h"
10 #include "testing/embedder_test.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "testing/test_support.h"
13 
14 namespace {
15 
16 class FPDFPPOEmbeddertest : public EmbedderTest {};
17 
18 }  // namespace
19 
TEST_F(FPDFPPOEmbeddertest,NoViewerPreferences)20 TEST_F(FPDFPPOEmbeddertest, NoViewerPreferences) {
21   EXPECT_TRUE(OpenDocument("hello_world.pdf"));
22 
23   FPDF_DOCUMENT output_doc = FPDF_CreateNewDocument();
24   EXPECT_TRUE(output_doc);
25   EXPECT_FALSE(FPDF_CopyViewerPreferences(output_doc, document()));
26   FPDF_CloseDocument(output_doc);
27 }
28 
TEST_F(FPDFPPOEmbeddertest,ViewerPreferences)29 TEST_F(FPDFPPOEmbeddertest, ViewerPreferences) {
30   EXPECT_TRUE(OpenDocument("viewer_ref.pdf"));
31 
32   FPDF_DOCUMENT output_doc = FPDF_CreateNewDocument();
33   EXPECT_TRUE(output_doc);
34   EXPECT_TRUE(FPDF_CopyViewerPreferences(output_doc, document()));
35   FPDF_CloseDocument(output_doc);
36 }
37 
TEST_F(FPDFPPOEmbeddertest,ImportPages)38 TEST_F(FPDFPPOEmbeddertest, ImportPages) {
39   EXPECT_TRUE(OpenDocument("viewer_ref.pdf"));
40 
41   FPDF_PAGE page = LoadPage(0);
42   EXPECT_TRUE(page);
43 
44   FPDF_DOCUMENT output_doc = FPDF_CreateNewDocument();
45   EXPECT_TRUE(output_doc);
46   EXPECT_TRUE(FPDF_CopyViewerPreferences(output_doc, document()));
47   EXPECT_TRUE(FPDF_ImportPages(output_doc, document(), "1", 0));
48   EXPECT_EQ(1, FPDF_GetPageCount(output_doc));
49   FPDF_CloseDocument(output_doc);
50 
51   UnloadPage(page);
52 }
53 
TEST_F(FPDFPPOEmbeddertest,BadRanges)54 TEST_F(FPDFPPOEmbeddertest, BadRanges) {
55   EXPECT_TRUE(OpenDocument("viewer_ref.pdf"));
56 
57   FPDF_PAGE page = LoadPage(0);
58   EXPECT_TRUE(page);
59 
60   FPDF_DOCUMENT output_doc = FPDF_CreateNewDocument();
61   EXPECT_TRUE(output_doc);
62   EXPECT_FALSE(FPDF_ImportPages(output_doc, document(), "clams", 0));
63   EXPECT_FALSE(FPDF_ImportPages(output_doc, document(), "0", 0));
64   EXPECT_FALSE(FPDF_ImportPages(output_doc, document(), "42", 0));
65   EXPECT_FALSE(FPDF_ImportPages(output_doc, document(), "1,2", 0));
66   EXPECT_FALSE(FPDF_ImportPages(output_doc, document(), "1-2", 0));
67   EXPECT_FALSE(FPDF_ImportPages(output_doc, document(), ",1", 0));
68   EXPECT_FALSE(FPDF_ImportPages(output_doc, document(), "1,", 0));
69   EXPECT_FALSE(FPDF_ImportPages(output_doc, document(), "1-", 0));
70   EXPECT_FALSE(FPDF_ImportPages(output_doc, document(), "-1", 0));
71   EXPECT_FALSE(FPDF_ImportPages(output_doc, document(), "-,0,,,1-", 0));
72   FPDF_CloseDocument(output_doc);
73 
74   UnloadPage(page);
75 }
76 
TEST_F(FPDFPPOEmbeddertest,GoodRanges)77 TEST_F(FPDFPPOEmbeddertest, GoodRanges) {
78   EXPECT_TRUE(OpenDocument("viewer_ref.pdf"));
79 
80   FPDF_PAGE page = LoadPage(0);
81   EXPECT_TRUE(page);
82 
83   FPDF_DOCUMENT output_doc = FPDF_CreateNewDocument();
84   EXPECT_TRUE(output_doc);
85   EXPECT_TRUE(FPDF_CopyViewerPreferences(output_doc, document()));
86   EXPECT_TRUE(FPDF_ImportPages(output_doc, document(), "1,1,1,1", 0));
87   EXPECT_TRUE(FPDF_ImportPages(output_doc, document(), "1-1", 0));
88   EXPECT_EQ(5, FPDF_GetPageCount(output_doc));
89   FPDF_CloseDocument(output_doc);
90 
91   UnloadPage(page);
92 }
93 
TEST_F(FPDFPPOEmbeddertest,BUG_664284)94 TEST_F(FPDFPPOEmbeddertest, BUG_664284) {
95   EXPECT_TRUE(OpenDocument("bug_664284.pdf"));
96 
97   FPDF_PAGE page = LoadPage(0);
98   EXPECT_TRUE(page);
99 
100   FPDF_DOCUMENT output_doc = FPDF_CreateNewDocument();
101   EXPECT_TRUE(output_doc);
102   EXPECT_TRUE(FPDF_ImportPages(output_doc, document(), "1", 0));
103   FPDF_CloseDocument(output_doc);
104 
105   UnloadPage(page);
106 }
107