Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(488)

Side by Side Diff: fpdfsdk/src/fpdfview_embeddertest.cpp

Issue 1137233002: Merge to XFA: Make (and verify) public/ files compile under C. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Test new XFA APIs. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/src/fpdfview_c_api_test.c ('k') | pdfium.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 PDFium Authors. All rights reserved. 1 // Copyright 2015 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <limits> 5 #include <limits>
6 #include <string> 6 #include <string>
7 7
8 #include "../../public/fpdfview.h" 8 #include "../../public/fpdfview.h"
9 #include "../../testing/embedder_test.h" 9 #include "../../testing/embedder_test.h"
10 #include "fpdfview_c_api_test.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 12
13 TEST(fpdf, CApiTest) {
14 EXPECT_TRUE(CheckPDFiumCApi());
15 }
16
12 class FPDFViewEmbeddertest : public EmbedderTest { 17 class FPDFViewEmbeddertest : public EmbedderTest {
13 }; 18 };
14 19
15 TEST_F(FPDFViewEmbeddertest, Document) { 20 TEST_F(FPDFViewEmbeddertest, Document) {
16 EXPECT_TRUE(OpenDocument("testing/resources/about_blank.pdf")); 21 EXPECT_TRUE(OpenDocument("testing/resources/about_blank.pdf"));
17 EXPECT_EQ(1, GetPageCount()); 22 EXPECT_EQ(1, GetPageCount());
18 EXPECT_EQ(0, GetFirstPageNum()); 23 EXPECT_EQ(0, GetFirstPageNum());
19 24
20 int version; 25 int version;
21 EXPECT_TRUE(FPDF_GetFileVersion(document(), &version)); 26 EXPECT_TRUE(FPDF_GetFileVersion(document(), &version));
(...skipping 21 matching lines...) Expand all
43 } 48 }
44 49
45 TEST_F(FPDFViewEmbeddertest, NamedDests) { 50 TEST_F(FPDFViewEmbeddertest, NamedDests) {
46 EXPECT_TRUE(OpenDocument("testing/resources/named_dests.pdf")); 51 EXPECT_TRUE(OpenDocument("testing/resources/named_dests.pdf"));
47 long buffer_size; 52 long buffer_size;
48 char fixed_buffer[512]; 53 char fixed_buffer[512];
49 FPDF_DEST dest; 54 FPDF_DEST dest;
50 55
51 // Query the size of the first item. 56 // Query the size of the first item.
52 buffer_size = 2000000; // Absurdly large, check not used for this case. 57 buffer_size = 2000000; // Absurdly large, check not used for this case.
53 dest = FPDF_GetNamedDest(document(), 0, nullptr, buffer_size); 58 dest = FPDF_GetNamedDest(document(), 0, nullptr, &buffer_size);
54 EXPECT_NE(nullptr, dest); 59 EXPECT_NE(nullptr, dest);
55 EXPECT_EQ(12u, buffer_size); 60 EXPECT_EQ(12u, buffer_size);
56 61
57 // Try to retrieve the first item with too small a buffer. 62 // Try to retrieve the first item with too small a buffer.
58 buffer_size = 10; 63 buffer_size = 10;
59 dest = FPDF_GetNamedDest(document(), 0, fixed_buffer, buffer_size); 64 dest = FPDF_GetNamedDest(document(), 0, fixed_buffer, &buffer_size);
60 EXPECT_NE(nullptr, dest); 65 EXPECT_NE(nullptr, dest);
61 EXPECT_EQ(-1, buffer_size); 66 EXPECT_EQ(-1, buffer_size);
62 67
63 // Try to retrieve the first item with correctly sized buffer. Item is 68 // Try to retrieve the first item with correctly sized buffer. Item is
64 // taken from Dests NameTree in named_dests.pdf. 69 // taken from Dests NameTree in named_dests.pdf.
65 buffer_size = 12; 70 buffer_size = 12;
66 dest = FPDF_GetNamedDest(document(), 0, fixed_buffer, buffer_size); 71 dest = FPDF_GetNamedDest(document(), 0, fixed_buffer, &buffer_size);
67 EXPECT_NE(nullptr, dest); 72 EXPECT_NE(nullptr, dest);
68 EXPECT_EQ(12u, buffer_size); 73 EXPECT_EQ(12u, buffer_size);
69 EXPECT_EQ(std::string("F\0i\0r\0s\0t\0\0\0", 12), 74 EXPECT_EQ(std::string("F\0i\0r\0s\0t\0\0\0", 12),
70 std::string(fixed_buffer, buffer_size)); 75 std::string(fixed_buffer, buffer_size));
71 76
72 // Try to retrieve the second item with ample buffer. Item is taken 77 // Try to retrieve the second item with ample buffer. Item is taken
73 // from Dests NameTree but has a sub-dictionary in named_dests.pdf. 78 // from Dests NameTree but has a sub-dictionary in named_dests.pdf.
74 buffer_size = sizeof(fixed_buffer); 79 buffer_size = sizeof(fixed_buffer);
75 dest = FPDF_GetNamedDest(document(), 1, fixed_buffer, buffer_size); 80 dest = FPDF_GetNamedDest(document(), 1, fixed_buffer, &buffer_size);
76 EXPECT_NE(nullptr, dest); 81 EXPECT_NE(nullptr, dest);
77 EXPECT_EQ(10u, buffer_size); 82 EXPECT_EQ(10u, buffer_size);
78 EXPECT_EQ(std::string("N\0e\0x\0t\0\0\0", 10), 83 EXPECT_EQ(std::string("N\0e\0x\0t\0\0\0", 10),
79 std::string(fixed_buffer, buffer_size)); 84 std::string(fixed_buffer, buffer_size));
80 85
81 // Try to retrieve third item with ample buffer. Item is taken 86 // Try to retrieve third item with ample buffer. Item is taken
82 // from Dests NameTree but has a bad sub-dictionary in named_dests.pdf. 87 // from Dests NameTree but has a bad sub-dictionary in named_dests.pdf.
83 // in named_dests.pdf). 88 // in named_dests.pdf).
84 buffer_size = sizeof(fixed_buffer); 89 buffer_size = sizeof(fixed_buffer);
85 dest = FPDF_GetNamedDest(document(), 2, fixed_buffer, buffer_size); 90 dest = FPDF_GetNamedDest(document(), 2, fixed_buffer, &buffer_size);
86 EXPECT_EQ(nullptr, dest); 91 EXPECT_EQ(nullptr, dest);
87 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified. 92 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified.
88 93
89 // Try to retrieve the forth item with ample buffer. Item is taken 94 // Try to retrieve the forth item with ample buffer. Item is taken
90 // from Dests NameTree but has a vale of the wrong type in named_dests.pdf. 95 // from Dests NameTree but has a vale of the wrong type in named_dests.pdf.
91 buffer_size = sizeof(fixed_buffer); 96 buffer_size = sizeof(fixed_buffer);
92 dest = FPDF_GetNamedDest(document(), 3, fixed_buffer, buffer_size); 97 dest = FPDF_GetNamedDest(document(), 3, fixed_buffer, &buffer_size);
93 EXPECT_EQ(nullptr, dest); 98 EXPECT_EQ(nullptr, dest);
94 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified. 99 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified.
95 100
96 // Try to retrieve fifth item with ample buffer. Item taken from the 101 // Try to retrieve fifth item with ample buffer. Item taken from the
97 // old-style Dests dictionary object in named_dests.pdf. 102 // old-style Dests dictionary object in named_dests.pdf.
98 buffer_size = sizeof(fixed_buffer); 103 buffer_size = sizeof(fixed_buffer);
99 dest = FPDF_GetNamedDest(document(), 4, fixed_buffer, buffer_size); 104 dest = FPDF_GetNamedDest(document(), 4, fixed_buffer, &buffer_size);
100 EXPECT_NE(nullptr, dest); 105 EXPECT_NE(nullptr, dest);
101 EXPECT_EQ(30u, buffer_size); 106 EXPECT_EQ(30u, buffer_size);
102 EXPECT_EQ( 107 EXPECT_EQ(
103 std::string("F\0i\0r\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 30), 108 std::string("F\0i\0r\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 30),
104 std::string(fixed_buffer, buffer_size)); 109 std::string(fixed_buffer, buffer_size));
105 110
106 // Try to retrieve sixth item with ample buffer. Item istaken from the 111 // Try to retrieve sixth item with ample buffer. Item istaken from the
107 // old-style Dests dictionary object but has a sub-dictionary in 112 // old-style Dests dictionary object but has a sub-dictionary in
108 // named_dests.pdf. 113 // named_dests.pdf.
109 buffer_size = sizeof(fixed_buffer); 114 buffer_size = sizeof(fixed_buffer);
110 dest = FPDF_GetNamedDest(document(), 5, fixed_buffer, buffer_size); 115 dest = FPDF_GetNamedDest(document(), 5, fixed_buffer, &buffer_size);
111 EXPECT_NE(nullptr, dest); 116 EXPECT_NE(nullptr, dest);
112 EXPECT_EQ(28u, buffer_size); 117 EXPECT_EQ(28u, buffer_size);
113 EXPECT_EQ( 118 EXPECT_EQ(
114 std::string("L\0a\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 28), 119 std::string("L\0a\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 28),
115 std::string(fixed_buffer, buffer_size)); 120 std::string(fixed_buffer, buffer_size));
116 121
117 // Try to retrieve non-existent item with ample buffer. 122 // Try to retrieve non-existent item with ample buffer.
118 buffer_size = sizeof(fixed_buffer); 123 buffer_size = sizeof(fixed_buffer);
119 dest = FPDF_GetNamedDest(document(), 6, fixed_buffer, buffer_size); 124 dest = FPDF_GetNamedDest(document(), 6, fixed_buffer, &buffer_size);
120 EXPECT_EQ(nullptr, dest); 125 EXPECT_EQ(nullptr, dest);
121 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified. 126 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified.
122 127
123 // Try to underflow/overflow the integer index. 128 // Try to underflow/overflow the integer index.
124 buffer_size = sizeof(fixed_buffer); 129 buffer_size = sizeof(fixed_buffer);
125 dest = FPDF_GetNamedDest(document(), std::numeric_limits<int>::max(), 130 dest = FPDF_GetNamedDest(document(), std::numeric_limits<int>::max(),
126 fixed_buffer, buffer_size); 131 fixed_buffer, &buffer_size);
127 EXPECT_EQ(nullptr, dest); 132 EXPECT_EQ(nullptr, dest);
128 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified. 133 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified.
129 134
130 buffer_size = sizeof(fixed_buffer); 135 buffer_size = sizeof(fixed_buffer);
131 dest = FPDF_GetNamedDest(document(), std::numeric_limits<int>::min(), 136 dest = FPDF_GetNamedDest(document(), std::numeric_limits<int>::min(),
132 fixed_buffer, buffer_size); 137 fixed_buffer, &buffer_size);
133 EXPECT_EQ(nullptr, dest); 138 EXPECT_EQ(nullptr, dest);
134 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified. 139 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified.
135 140
136 buffer_size = sizeof(fixed_buffer); 141 buffer_size = sizeof(fixed_buffer);
137 dest = FPDF_GetNamedDest(document(), -1, fixed_buffer, buffer_size); 142 dest = FPDF_GetNamedDest(document(), -1, fixed_buffer, &buffer_size);
138 EXPECT_EQ(nullptr, dest); 143 EXPECT_EQ(nullptr, dest);
139 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified. 144 EXPECT_EQ(sizeof(fixed_buffer), buffer_size); // unmodified.
140 } 145 }
141 146
142 TEST_F(FPDFViewEmbeddertest, NamedDestsByName) { 147 TEST_F(FPDFViewEmbeddertest, NamedDestsByName) {
143 EXPECT_TRUE(OpenDocument("testing/resources/named_dests.pdf")); 148 EXPECT_TRUE(OpenDocument("testing/resources/named_dests.pdf"));
144 149
145 // Null pointer returns NULL. 150 // Null pointer returns NULL.
146 FPDF_DEST dest = FPDF_GetNamedDestByName(document(), nullptr); 151 FPDF_DEST dest = FPDF_GetNamedDestByName(document(), nullptr);
147 EXPECT_EQ(nullptr, dest); 152 EXPECT_EQ(nullptr, dest);
148 153
149 // Empty string returns NULL. 154 // Empty string returns NULL.
150 dest = FPDF_GetNamedDestByName(document(), ""); 155 dest = FPDF_GetNamedDestByName(document(), "");
151 EXPECT_EQ(nullptr, dest); 156 EXPECT_EQ(nullptr, dest);
152 157
153 // Item from Dests NameTree. 158 // Item from Dests NameTree.
154 dest = FPDF_GetNamedDestByName(document(), "First"); 159 dest = FPDF_GetNamedDestByName(document(), "First");
155 EXPECT_NE(nullptr, dest); 160 EXPECT_NE(nullptr, dest);
156 161
157 long ignore_len = 0; 162 long ignore_len = 0;
158 FPDF_DEST dest_by_index = 163 FPDF_DEST dest_by_index =
159 FPDF_GetNamedDest(document(), 0, nullptr, ignore_len); 164 FPDF_GetNamedDest(document(), 0, nullptr, &ignore_len);
160 EXPECT_EQ(dest_by_index, dest); 165 EXPECT_EQ(dest_by_index, dest);
161 166
162 // Item from Dests dictionary. 167 // Item from Dests dictionary.
163 dest = FPDF_GetNamedDestByName(document(), "FirstAlternate"); 168 dest = FPDF_GetNamedDestByName(document(), "FirstAlternate");
164 EXPECT_NE(nullptr, dest); 169 EXPECT_NE(nullptr, dest);
165 170
166 ignore_len = 0; 171 ignore_len = 0;
167 dest_by_index = FPDF_GetNamedDest(document(), 4, nullptr, ignore_len); 172 dest_by_index = FPDF_GetNamedDest(document(), 4, nullptr, &ignore_len);
168 EXPECT_EQ(dest_by_index, dest); 173 EXPECT_EQ(dest_by_index, dest);
169 174
170 // Bad value type for item from Dests NameTree array. 175 // Bad value type for item from Dests NameTree array.
171 dest = FPDF_GetNamedDestByName(document(), "WrongType"); 176 dest = FPDF_GetNamedDestByName(document(), "WrongType");
172 EXPECT_EQ(nullptr, dest); 177 EXPECT_EQ(nullptr, dest);
173 178
174 // No such destination in either Dest NameTree or dictionary. 179 // No such destination in either Dest NameTree or dictionary.
175 dest = FPDF_GetNamedDestByName(document(), "Bogus"); 180 dest = FPDF_GetNamedDestByName(document(), "Bogus");
176 EXPECT_EQ(nullptr, dest); 181 EXPECT_EQ(nullptr, dest);
177 } 182 }
(...skipping 11 matching lines...) Expand all
189 TEST_F(FPDFViewEmbeddertest, Crasher_452455) { 194 TEST_F(FPDFViewEmbeddertest, Crasher_452455) {
190 EXPECT_TRUE(OpenDocument("testing/resources/bug_452455.pdf")); 195 EXPECT_TRUE(OpenDocument("testing/resources/bug_452455.pdf"));
191 FPDF_PAGE page = LoadPage(0); 196 FPDF_PAGE page = LoadPage(0);
192 EXPECT_NE(nullptr, page); 197 EXPECT_NE(nullptr, page);
193 } 198 }
194 199
195 TEST_F(FPDFViewEmbeddertest, Crasher_454695) { 200 TEST_F(FPDFViewEmbeddertest, Crasher_454695) {
196 // XFA branch detects this document as bad. 201 // XFA branch detects this document as bad.
197 EXPECT_FALSE(OpenDocument("testing/resources/bug_454695.pdf")); 202 EXPECT_FALSE(OpenDocument("testing/resources/bug_454695.pdf"));
198 } 203 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/fpdfview_c_api_test.c ('k') | pdfium.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698