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

Side by Side Diff: fpdfsdk/fpdftext_embeddertest.cpp

Issue 2032613003: Get rid of NULLs in core/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Fix a bad merge Created 4 years, 6 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/fpdfdoc_embeddertest.cpp ('k') | fpdfsdk/fxedit/fxet_edit.cpp » ('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 "core/fxcrt/include/fx_basic.h" 5 #include "core/fxcrt/include/fx_basic.h"
6 #include "public/fpdf_text.h" 6 #include "public/fpdf_text.h"
7 #include "public/fpdfview.h" 7 #include "public/fpdfview.h"
8 #include "testing/embedder_test.h" 8 #include "testing/embedder_test.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "testing/test_support.h" 10 #include "testing/test_support.h"
(...skipping 14 matching lines...) Expand all
25 return true; 25 return true;
26 } 26 }
27 27
28 } // namespace 28 } // namespace
29 29
30 class FPDFTextEmbeddertest : public EmbedderTest {}; 30 class FPDFTextEmbeddertest : public EmbedderTest {};
31 31
32 TEST_F(FPDFTextEmbeddertest, Text) { 32 TEST_F(FPDFTextEmbeddertest, Text) {
33 EXPECT_TRUE(OpenDocument("hello_world.pdf")); 33 EXPECT_TRUE(OpenDocument("hello_world.pdf"));
34 FPDF_PAGE page = LoadPage(0); 34 FPDF_PAGE page = LoadPage(0);
35 EXPECT_NE(nullptr, page); 35 EXPECT_TRUE(page);
36 36
37 FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page); 37 FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page);
38 EXPECT_NE(nullptr, textpage); 38 EXPECT_TRUE(textpage);
39 39
40 static const char expected[] = "Hello, world!\r\nGoodbye, world!"; 40 static const char expected[] = "Hello, world!\r\nGoodbye, world!";
41 unsigned short fixed_buffer[128]; 41 unsigned short fixed_buffer[128];
42 memset(fixed_buffer, 0xbd, sizeof(fixed_buffer)); 42 memset(fixed_buffer, 0xbd, sizeof(fixed_buffer));
43 43
44 // Check includes the terminating NUL that is provided. 44 // Check includes the terminating NUL that is provided.
45 int num_chars = FPDFText_GetText(textpage, 0, 128, fixed_buffer); 45 int num_chars = FPDFText_GetText(textpage, 0, 128, fixed_buffer);
46 ASSERT_GE(num_chars, 0); 46 ASSERT_GE(num_chars, 0);
47 EXPECT_EQ(sizeof(expected), static_cast<size_t>(num_chars)); 47 EXPECT_EQ(sizeof(expected), static_cast<size_t>(num_chars));
48 EXPECT_TRUE(check_unsigned_shorts(expected, fixed_buffer, sizeof(expected))); 48 EXPECT_TRUE(check_unsigned_shorts(expected, fixed_buffer, sizeof(expected)));
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 EXPECT_EQ(0u, fixed_buffer[9]); 134 EXPECT_EQ(0u, fixed_buffer[9]);
135 EXPECT_EQ(0xbdbd, fixed_buffer[10]); 135 EXPECT_EQ(0xbdbd, fixed_buffer[10]);
136 136
137 FPDFText_ClosePage(textpage); 137 FPDFText_ClosePage(textpage);
138 UnloadPage(page); 138 UnloadPage(page);
139 } 139 }
140 140
141 TEST_F(FPDFTextEmbeddertest, TextSearch) { 141 TEST_F(FPDFTextEmbeddertest, TextSearch) {
142 EXPECT_TRUE(OpenDocument("hello_world.pdf")); 142 EXPECT_TRUE(OpenDocument("hello_world.pdf"));
143 FPDF_PAGE page = LoadPage(0); 143 FPDF_PAGE page = LoadPage(0);
144 EXPECT_NE(nullptr, page); 144 EXPECT_TRUE(page);
145 145
146 FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page); 146 FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page);
147 EXPECT_NE(nullptr, textpage); 147 EXPECT_TRUE(textpage);
148 148
149 std::unique_ptr<unsigned short, pdfium::FreeDeleter> nope = 149 std::unique_ptr<unsigned short, pdfium::FreeDeleter> nope =
150 GetFPDFWideString(L"nope"); 150 GetFPDFWideString(L"nope");
151 std::unique_ptr<unsigned short, pdfium::FreeDeleter> world = 151 std::unique_ptr<unsigned short, pdfium::FreeDeleter> world =
152 GetFPDFWideString(L"world"); 152 GetFPDFWideString(L"world");
153 std::unique_ptr<unsigned short, pdfium::FreeDeleter> world_caps = 153 std::unique_ptr<unsigned short, pdfium::FreeDeleter> world_caps =
154 GetFPDFWideString(L"WORLD"); 154 GetFPDFWideString(L"WORLD");
155 std::unique_ptr<unsigned short, pdfium::FreeDeleter> world_substr = 155 std::unique_ptr<unsigned short, pdfium::FreeDeleter> world_substr =
156 GetFPDFWideString(L"orld"); 156 GetFPDFWideString(L"orld");
157 157
158 // No occurences of "nope" in test page. 158 // No occurences of "nope" in test page.
159 FPDF_SCHHANDLE search = FPDFText_FindStart(textpage, nope.get(), 0, 0); 159 FPDF_SCHHANDLE search = FPDFText_FindStart(textpage, nope.get(), 0, 0);
160 EXPECT_NE(nullptr, search); 160 EXPECT_TRUE(search);
161 EXPECT_EQ(0, FPDFText_GetSchResultIndex(search)); 161 EXPECT_EQ(0, FPDFText_GetSchResultIndex(search));
162 EXPECT_EQ(0, FPDFText_GetSchCount(search)); 162 EXPECT_EQ(0, FPDFText_GetSchCount(search));
163 163
164 // Advancing finds nothing. 164 // Advancing finds nothing.
165 EXPECT_FALSE(FPDFText_FindNext(search)); 165 EXPECT_FALSE(FPDFText_FindNext(search));
166 EXPECT_EQ(0, FPDFText_GetSchResultIndex(search)); 166 EXPECT_EQ(0, FPDFText_GetSchResultIndex(search));
167 EXPECT_EQ(0, FPDFText_GetSchCount(search)); 167 EXPECT_EQ(0, FPDFText_GetSchCount(search));
168 168
169 // Retreating finds nothing. 169 // Retreating finds nothing.
170 EXPECT_FALSE(FPDFText_FindPrev(search)); 170 EXPECT_FALSE(FPDFText_FindPrev(search));
171 EXPECT_EQ(0, FPDFText_GetSchResultIndex(search)); 171 EXPECT_EQ(0, FPDFText_GetSchResultIndex(search));
172 EXPECT_EQ(0, FPDFText_GetSchCount(search)); 172 EXPECT_EQ(0, FPDFText_GetSchCount(search));
173 FPDFText_FindClose(search); 173 FPDFText_FindClose(search);
174 174
175 // Two occurences of "world" in test page. 175 // Two occurences of "world" in test page.
176 search = FPDFText_FindStart(textpage, world.get(), 0, 2); 176 search = FPDFText_FindStart(textpage, world.get(), 0, 2);
177 EXPECT_NE(nullptr, search); 177 EXPECT_TRUE(search);
178 178
179 // Remains not found until advanced. 179 // Remains not found until advanced.
180 EXPECT_EQ(0, FPDFText_GetSchResultIndex(search)); 180 EXPECT_EQ(0, FPDFText_GetSchResultIndex(search));
181 EXPECT_EQ(0, FPDFText_GetSchCount(search)); 181 EXPECT_EQ(0, FPDFText_GetSchCount(search));
182 182
183 // First occurence of "world" in this test page. 183 // First occurence of "world" in this test page.
184 EXPECT_TRUE(FPDFText_FindNext(search)); 184 EXPECT_TRUE(FPDFText_FindNext(search));
185 EXPECT_EQ(7, FPDFText_GetSchResultIndex(search)); 185 EXPECT_EQ(7, FPDFText_GetSchResultIndex(search));
186 EXPECT_EQ(5, FPDFText_GetSchCount(search)); 186 EXPECT_EQ(5, FPDFText_GetSchCount(search));
187 187
(...skipping 14 matching lines...) Expand all
202 202
203 // Found position unchanged when fails to retreat. 203 // Found position unchanged when fails to retreat.
204 EXPECT_FALSE(FPDFText_FindPrev(search)); 204 EXPECT_FALSE(FPDFText_FindPrev(search));
205 EXPECT_EQ(7, FPDFText_GetSchResultIndex(search)); 205 EXPECT_EQ(7, FPDFText_GetSchResultIndex(search));
206 EXPECT_EQ(5, FPDFText_GetSchCount(search)); 206 EXPECT_EQ(5, FPDFText_GetSchCount(search));
207 FPDFText_FindClose(search); 207 FPDFText_FindClose(search);
208 208
209 // Exact search unaffected by case sensitiity and whole word flags. 209 // Exact search unaffected by case sensitiity and whole word flags.
210 search = FPDFText_FindStart(textpage, world.get(), 210 search = FPDFText_FindStart(textpage, world.get(),
211 FPDF_MATCHCASE | FPDF_MATCHWHOLEWORD, 0); 211 FPDF_MATCHCASE | FPDF_MATCHWHOLEWORD, 0);
212 EXPECT_NE(nullptr, search); 212 EXPECT_TRUE(search);
213 EXPECT_TRUE(FPDFText_FindNext(search)); 213 EXPECT_TRUE(FPDFText_FindNext(search));
214 EXPECT_EQ(7, FPDFText_GetSchResultIndex(search)); 214 EXPECT_EQ(7, FPDFText_GetSchResultIndex(search));
215 EXPECT_EQ(5, FPDFText_GetSchCount(search)); 215 EXPECT_EQ(5, FPDFText_GetSchCount(search));
216 FPDFText_FindClose(search); 216 FPDFText_FindClose(search);
217 217
218 // Default is case-insensitive, so matching agaist caps works. 218 // Default is case-insensitive, so matching agaist caps works.
219 search = FPDFText_FindStart(textpage, world_caps.get(), 0, 0); 219 search = FPDFText_FindStart(textpage, world_caps.get(), 0, 0);
220 EXPECT_NE(nullptr, search); 220 EXPECT_TRUE(search);
221 EXPECT_TRUE(FPDFText_FindNext(search)); 221 EXPECT_TRUE(FPDFText_FindNext(search));
222 EXPECT_EQ(7, FPDFText_GetSchResultIndex(search)); 222 EXPECT_EQ(7, FPDFText_GetSchResultIndex(search));
223 EXPECT_EQ(5, FPDFText_GetSchCount(search)); 223 EXPECT_EQ(5, FPDFText_GetSchCount(search));
224 FPDFText_FindClose(search); 224 FPDFText_FindClose(search);
225 225
226 // But can be made case sensitive, in which case this fails. 226 // But can be made case sensitive, in which case this fails.
227 search = FPDFText_FindStart(textpage, world_caps.get(), FPDF_MATCHCASE, 0); 227 search = FPDFText_FindStart(textpage, world_caps.get(), FPDF_MATCHCASE, 0);
228 EXPECT_FALSE(FPDFText_FindNext(search)); 228 EXPECT_FALSE(FPDFText_FindNext(search));
229 EXPECT_EQ(0, FPDFText_GetSchResultIndex(search)); 229 EXPECT_EQ(0, FPDFText_GetSchResultIndex(search));
230 EXPECT_EQ(0, FPDFText_GetSchCount(search)); 230 EXPECT_EQ(0, FPDFText_GetSchCount(search));
(...skipping 14 matching lines...) Expand all
245 FPDFText_FindClose(search); 245 FPDFText_FindClose(search);
246 246
247 FPDFText_ClosePage(textpage); 247 FPDFText_ClosePage(textpage);
248 UnloadPage(page); 248 UnloadPage(page);
249 } 249 }
250 250
251 // Test that the page has characters despite a bad stream length. 251 // Test that the page has characters despite a bad stream length.
252 TEST_F(FPDFTextEmbeddertest, StreamLengthPastEndOfFile) { 252 TEST_F(FPDFTextEmbeddertest, StreamLengthPastEndOfFile) {
253 EXPECT_TRUE(OpenDocument("bug_57.pdf")); 253 EXPECT_TRUE(OpenDocument("bug_57.pdf"));
254 FPDF_PAGE page = LoadPage(0); 254 FPDF_PAGE page = LoadPage(0);
255 EXPECT_NE(nullptr, page); 255 EXPECT_TRUE(page);
256 256
257 FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page); 257 FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page);
258 EXPECT_NE(nullptr, textpage); 258 EXPECT_TRUE(textpage);
259 EXPECT_EQ(13, FPDFText_CountChars(textpage)); 259 EXPECT_EQ(13, FPDFText_CountChars(textpage));
260 260
261 FPDFText_ClosePage(textpage); 261 FPDFText_ClosePage(textpage);
262 UnloadPage(page); 262 UnloadPage(page);
263 } 263 }
264 264
265 TEST_F(FPDFTextEmbeddertest, WebLinks) { 265 TEST_F(FPDFTextEmbeddertest, WebLinks) {
266 EXPECT_TRUE(OpenDocument("weblinks.pdf")); 266 EXPECT_TRUE(OpenDocument("weblinks.pdf"));
267 FPDF_PAGE page = LoadPage(0); 267 FPDF_PAGE page = LoadPage(0);
268 EXPECT_NE(nullptr, page); 268 EXPECT_TRUE(page);
269 269
270 FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page); 270 FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page);
271 EXPECT_NE(nullptr, textpage); 271 EXPECT_TRUE(textpage);
272 272
273 FPDF_PAGELINK pagelink = FPDFLink_LoadWebLinks(textpage); 273 FPDF_PAGELINK pagelink = FPDFLink_LoadWebLinks(textpage);
274 EXPECT_NE(nullptr, pagelink); 274 EXPECT_TRUE(pagelink);
275 275
276 // Page contains two HTTP-style URLs. 276 // Page contains two HTTP-style URLs.
277 EXPECT_EQ(2, FPDFLink_CountWebLinks(pagelink)); 277 EXPECT_EQ(2, FPDFLink_CountWebLinks(pagelink));
278 278
279 // Only a terminating NUL required for bogus links. 279 // Only a terminating NUL required for bogus links.
280 EXPECT_EQ(1, FPDFLink_GetURL(pagelink, 2, nullptr, 0)); 280 EXPECT_EQ(1, FPDFLink_GetURL(pagelink, 2, nullptr, 0));
281 EXPECT_EQ(1, FPDFLink_GetURL(pagelink, 1400, nullptr, 0)); 281 EXPECT_EQ(1, FPDFLink_GetURL(pagelink, 1400, nullptr, 0));
282 EXPECT_EQ(1, FPDFLink_GetURL(pagelink, -1, nullptr, 0)); 282 EXPECT_EQ(1, FPDFLink_GetURL(pagelink, -1, nullptr, 0));
283 283
284 // Query the number of characters required for each link (incl NUL). 284 // Query the number of characters required for each link (incl NUL).
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 EXPECT_EQ(-2.0, top); 364 EXPECT_EQ(-2.0, top);
365 365
366 FPDFLink_CloseWebLinks(pagelink); 366 FPDFLink_CloseWebLinks(pagelink);
367 FPDFText_ClosePage(textpage); 367 FPDFText_ClosePage(textpage);
368 UnloadPage(page); 368 UnloadPage(page);
369 } 369 }
370 370
371 TEST_F(FPDFTextEmbeddertest, GetFontSize) { 371 TEST_F(FPDFTextEmbeddertest, GetFontSize) {
372 EXPECT_TRUE(OpenDocument("hello_world.pdf")); 372 EXPECT_TRUE(OpenDocument("hello_world.pdf"));
373 FPDF_PAGE page = LoadPage(0); 373 FPDF_PAGE page = LoadPage(0);
374 EXPECT_NE(nullptr, page); 374 EXPECT_TRUE(page);
375 375
376 FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page); 376 FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page);
377 EXPECT_NE(nullptr, textpage); 377 EXPECT_TRUE(textpage);
378 378
379 const double kExpectedFontsSizes[] = {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 379 const double kExpectedFontsSizes[] = {12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
380 12, 12, 12, 1, 1, 16, 16, 16, 16, 16, 380 12, 12, 12, 1, 1, 16, 16, 16, 16, 16,
381 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}; 381 16, 16, 16, 16, 16, 16, 16, 16, 16, 16};
382 382
383 int count = FPDFText_CountChars(textpage); 383 int count = FPDFText_CountChars(textpage);
384 ASSERT_EQ(FX_ArraySize(kExpectedFontsSizes), static_cast<size_t>(count)); 384 ASSERT_EQ(FX_ArraySize(kExpectedFontsSizes), static_cast<size_t>(count));
385 for (int i = 0; i < count; ++i) 385 for (int i = 0; i < count; ++i)
386 EXPECT_EQ(kExpectedFontsSizes[i], FPDFText_GetFontSize(textpage, i)) << i; 386 EXPECT_EQ(kExpectedFontsSizes[i], FPDFText_GetFontSize(textpage, i)) << i;
387 387
388 FPDFText_ClosePage(textpage); 388 FPDFText_ClosePage(textpage);
389 UnloadPage(page); 389 UnloadPage(page);
390 } 390 }
OLDNEW
« no previous file with comments | « fpdfsdk/fpdfdoc_embeddertest.cpp ('k') | fpdfsdk/fxedit/fxet_edit.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698