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

Side by Side Diff: core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp

Issue 2001783003: Get rid of CPDF_Object::GetArray(). (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 4 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 | « core/fpdfapi/fpdf_parser/cpdf_object.cpp ('k') | core/fpdfapi/fpdf_parser/include/cpdf_array.h » ('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 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 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/fpdfapi/fpdf_parser/cpdf_boolean.h" 5 #include "core/fpdfapi/fpdf_parser/cpdf_boolean.h"
6 #include "core/fpdfapi/fpdf_parser/cpdf_null.h" 6 #include "core/fpdfapi/fpdf_parser/cpdf_null.h"
7 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" 7 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h"
8 #include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h" 8 #include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h"
9 #include "core/fpdfapi/fpdf_parser/include/cpdf_name.h" 9 #include "core/fpdfapi/fpdf_parser/include/cpdf_name.h"
10 #include "core/fpdfapi/fpdf_parser/include/cpdf_number.h" 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_number.h"
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 std::vector<ScopedObj> m_DirectObjs; 176 std::vector<ScopedObj> m_DirectObjs;
177 std::vector<int> m_DirectObjTypes; 177 std::vector<int> m_DirectObjTypes;
178 std::vector<ScopedObj> m_RefObjs; 178 std::vector<ScopedObj> m_RefObjs;
179 CPDF_Dictionary* m_DictObj; 179 CPDF_Dictionary* m_DictObj;
180 CPDF_Dictionary* m_StreamDictObj; 180 CPDF_Dictionary* m_StreamDictObj;
181 CPDF_Array* m_ArrayObj; 181 CPDF_Array* m_ArrayObj;
182 std::vector<CPDF_Object*> m_IndirectObjs; 182 std::vector<CPDF_Object*> m_IndirectObjs;
183 }; 183 };
184 184
185 TEST_F(PDFObjectsTest, GetString) { 185 TEST_F(PDFObjectsTest, GetString) {
186 const char* direct_obj_results[] = { 186 const char* const direct_obj_results[] = {
187 "false", "true", "1245", "9.00345", "A simple test", "\t\n", "space", 187 "false", "true", "1245", "9.00345", "A simple test", "\t\n", "space",
188 "", "", "", ""}; 188 "", "", "", ""};
189 // Check for direct objects. 189 // Check for direct objects.
190 for (size_t i = 0; i < m_DirectObjs.size(); ++i) 190 for (size_t i = 0; i < m_DirectObjs.size(); ++i)
191 EXPECT_STREQ(direct_obj_results[i], m_DirectObjs[i]->GetString().c_str()); 191 EXPECT_STREQ(direct_obj_results[i], m_DirectObjs[i]->GetString().c_str());
192 192
193 // Check indirect references. 193 // Check indirect references.
194 const char* indirect_obj_results[] = {"true", "1245", "\t\n", "space", 194 const char* const indirect_obj_results[] = {"true", "1245", "\t\n", "space",
195 "", "", ""}; 195 "", "", ""};
196 for (size_t i = 0; i < m_RefObjs.size(); ++i) { 196 for (size_t i = 0; i < m_RefObjs.size(); ++i) {
197 EXPECT_STREQ(indirect_obj_results[i], m_RefObjs[i]->GetString().c_str()); 197 EXPECT_STREQ(indirect_obj_results[i], m_RefObjs[i]->GetString().c_str());
198 } 198 }
199 } 199 }
200 200
201 TEST_F(PDFObjectsTest, GetUnicodeText) { 201 TEST_F(PDFObjectsTest, GetUnicodeText) {
202 const wchar_t* direct_obj_results[] = { 202 const wchar_t* const direct_obj_results[] = {
203 L"", L"", L"", L"", L"A simple test", 203 L"", L"", L"", L"", L"A simple test",
204 L"\t\n", L"space", L"", L"", L"abcdefghijklmnopqrstuvwxyz", 204 L"\t\n", L"space", L"", L"", L"abcdefghijklmnopqrstuvwxyz",
205 L""}; 205 L""};
206 // Check for direct objects. 206 // Check for direct objects.
207 for (size_t i = 0; i < m_DirectObjs.size(); ++i) { 207 for (size_t i = 0; i < m_DirectObjs.size(); ++i) {
208 EXPECT_STREQ(direct_obj_results[i], 208 EXPECT_STREQ(direct_obj_results[i],
209 m_DirectObjs[i]->GetUnicodeText().c_str()); 209 m_DirectObjs[i]->GetUnicodeText().c_str());
210 } 210 }
211 211
212 // Check indirect references. 212 // Check indirect references.
(...skipping 20 matching lines...) Expand all
233 for (size_t i = 0; i < m_DirectObjs.size(); ++i) 233 for (size_t i = 0; i < m_DirectObjs.size(); ++i)
234 EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetInteger()); 234 EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetInteger());
235 235
236 // Check indirect references. 236 // Check indirect references.
237 const int indirect_obj_results[] = {1, 1245, 0, 0, 0, 0, 0}; 237 const int indirect_obj_results[] = {1, 1245, 0, 0, 0, 0, 0};
238 for (size_t i = 0; i < m_RefObjs.size(); ++i) 238 for (size_t i = 0; i < m_RefObjs.size(); ++i)
239 EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetInteger()); 239 EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetInteger());
240 } 240 }
241 241
242 TEST_F(PDFObjectsTest, GetDict) { 242 TEST_F(PDFObjectsTest, GetDict) {
243 const CPDF_Dictionary* direct_obj_results[] = { 243 const CPDF_Dictionary* const direct_obj_results[] = {
244 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 244 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
245 nullptr, nullptr, m_DictObj, m_StreamDictObj, nullptr}; 245 nullptr, nullptr, m_DictObj, m_StreamDictObj, nullptr};
246 // Check for direct objects. 246 // Check for direct objects.
247 for (size_t i = 0; i < m_DirectObjs.size(); ++i) 247 for (size_t i = 0; i < m_DirectObjs.size(); ++i)
248 EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetDict()); 248 EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetDict());
249 249
250 // Check indirect references. 250 // Check indirect references.
251 const CPDF_Dictionary* indirect_obj_results[] = { 251 const CPDF_Dictionary* const indirect_obj_results[] = {
252 nullptr, nullptr, nullptr, nullptr, nullptr, m_DictObj, m_StreamDictObj}; 252 nullptr, nullptr, nullptr, nullptr, nullptr, m_DictObj, m_StreamDictObj};
253 for (size_t i = 0; i < m_RefObjs.size(); ++i) 253 for (size_t i = 0; i < m_RefObjs.size(); ++i)
254 EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetDict()); 254 EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetDict());
255 } 255 }
256 256
257 TEST_F(PDFObjectsTest, GetArray) { 257 TEST_F(PDFObjectsTest, GetArray) {
258 const CPDF_Array* direct_obj_results[] = { 258 const CPDF_Array* const direct_obj_results[] = {
259 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 259 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
260 nullptr, m_ArrayObj, nullptr, nullptr, nullptr}; 260 nullptr, m_ArrayObj, nullptr, nullptr, nullptr};
261 // Check for direct objects. 261 // Check for direct objects.
262 for (size_t i = 0; i < m_DirectObjs.size(); ++i) 262 for (size_t i = 0; i < m_DirectObjs.size(); ++i)
263 EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetArray()); 263 EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->AsArray());
264 264
265 // Check indirect references. 265 // Check indirect references.
266 for (const auto& it : m_RefObjs) 266 for (const auto& it : m_RefObjs)
267 EXPECT_EQ(nullptr, it->GetArray()); 267 EXPECT_EQ(nullptr, it->AsArray());
268 } 268 }
269 269
270 TEST_F(PDFObjectsTest, Clone) { 270 TEST_F(PDFObjectsTest, Clone) {
271 // Check for direct objects. 271 // Check for direct objects.
272 for (size_t i = 0; i < m_DirectObjs.size(); ++i) { 272 for (size_t i = 0; i < m_DirectObjs.size(); ++i) {
273 ScopedObj obj(m_DirectObjs[i]->Clone()); 273 ScopedObj obj(m_DirectObjs[i]->Clone());
274 EXPECT_TRUE(Equal(m_DirectObjs[i].get(), obj.get())); 274 EXPECT_TRUE(Equal(m_DirectObjs[i].get(), obj.get()));
275 } 275 }
276 276
277 // Check indirect references. 277 // Check indirect references.
(...skipping 20 matching lines...) Expand all
298 298
299 // Check indirect references. 299 // Check indirect references.
300 for (size_t i = 0; i < m_RefObjs.size(); ++i) 300 for (size_t i = 0; i < m_RefObjs.size(); ++i)
301 EXPECT_EQ(m_IndirectObjs[i], m_RefObjs[i]->GetDirect()); 301 EXPECT_EQ(m_IndirectObjs[i], m_RefObjs[i]->GetDirect());
302 } 302 }
303 303
304 TEST_F(PDFObjectsTest, SetString) { 304 TEST_F(PDFObjectsTest, SetString) {
305 // Check for direct objects. 305 // Check for direct objects.
306 const char* const set_values[] = {"true", "fake", "3.125f", "097", 306 const char* const set_values[] = {"true", "fake", "3.125f", "097",
307 "changed", "", "NewName"}; 307 "changed", "", "NewName"};
308 const char* expected[] = {"true", "false", "3.125", "97", 308 const char* const expected[] = {"true", "false", "3.125", "97",
309 "changed", "", "NewName"}; 309 "changed", "", "NewName"};
310 for (size_t i = 0; i < FX_ArraySize(set_values); ++i) { 310 for (size_t i = 0; i < FX_ArraySize(set_values); ++i) {
311 m_DirectObjs[i]->SetString(set_values[i]); 311 m_DirectObjs[i]->SetString(set_values[i]);
312 EXPECT_STREQ(expected[i], m_DirectObjs[i]->GetString().c_str()); 312 EXPECT_STREQ(expected[i], m_DirectObjs[i]->GetString().c_str());
313 } 313 }
314 } 314 }
315 315
316 TEST_F(PDFObjectsTest, IsTypeAndAsType) { 316 TEST_F(PDFObjectsTest, IsTypeAndAsType) {
317 // Check for direct objects. 317 // Check for direct objects.
318 for (size_t i = 0; i < m_DirectObjs.size(); ++i) { 318 for (size_t i = 0; i < m_DirectObjs.size(); ++i) {
319 if (m_DirectObjTypes[i] == CPDF_Object::ARRAY) { 319 if (m_DirectObjTypes[i] == CPDF_Object::ARRAY) {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 EXPECT_EQ(rect.left, arr_rect.left); 417 EXPECT_EQ(rect.left, arr_rect.left);
418 EXPECT_EQ(rect.right, arr_rect.right); 418 EXPECT_EQ(rect.right, arr_rect.right);
419 EXPECT_EQ(rect.bottom, arr_rect.bottom); 419 EXPECT_EQ(rect.bottom, arr_rect.bottom);
420 EXPECT_EQ(rect.top, arr_rect.top); 420 EXPECT_EQ(rect.top, arr_rect.top);
421 } 421 }
422 } 422 }
423 423
424 TEST(PDFArrayTest, GetTypeAt) { 424 TEST(PDFArrayTest, GetTypeAt) {
425 { 425 {
426 // Boolean array. 426 // Boolean array.
427 bool vals[] = {true, false, false, true, true}; 427 const bool vals[] = {true, false, false, true, true};
428 ScopedArray arr(new CPDF_Array); 428 ScopedArray arr(new CPDF_Array);
429 for (size_t i = 0; i < FX_ArraySize(vals); ++i) 429 for (size_t i = 0; i < FX_ArraySize(vals); ++i)
430 arr->InsertAt(i, new CPDF_Boolean(vals[i])); 430 arr->InsertAt(i, new CPDF_Boolean(vals[i]));
431 for (size_t i = 0; i < FX_ArraySize(vals); ++i) { 431 for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
432 TestArrayAccessors(arr.get(), i, // Array and index. 432 TestArrayAccessors(arr.get(), i, // Array and index.
433 vals[i] ? "true" : "false", // String value. 433 vals[i] ? "true" : "false", // String value.
434 nullptr, // Const string value. 434 nullptr, // Const string value.
435 vals[i] ? 1 : 0, // Integer value. 435 vals[i] ? 1 : 0, // Integer value.
436 0, // Float value. 436 0, // Float value.
437 nullptr, // Array value. 437 nullptr, // Array value.
438 nullptr, // Dictionary value. 438 nullptr, // Dictionary value.
439 nullptr); // Stream value. 439 nullptr); // Stream value.
440 } 440 }
441 } 441 }
442 { 442 {
443 // Integer array. 443 // Integer array.
444 int vals[] = {10, 0, -345, 2089345456, -1000000000, 567, 93658767}; 444 const int vals[] = {10, 0, -345, 2089345456, -1000000000, 567, 93658767};
445 ScopedArray arr(new CPDF_Array); 445 ScopedArray arr(new CPDF_Array);
446 for (size_t i = 0; i < FX_ArraySize(vals); ++i) 446 for (size_t i = 0; i < FX_ArraySize(vals); ++i)
447 arr->InsertAt(i, new CPDF_Number(vals[i])); 447 arr->InsertAt(i, new CPDF_Number(vals[i]));
448 for (size_t i = 0; i < FX_ArraySize(vals); ++i) { 448 for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
449 char buf[33]; 449 char buf[33];
450 TestArrayAccessors(arr.get(), i, // Array and index. 450 TestArrayAccessors(arr.get(), i, // Array and index.
451 FXSYS_itoa(vals[i], buf, 10), // String value. 451 FXSYS_itoa(vals[i], buf, 10), // String value.
452 nullptr, // Const string value. 452 nullptr, // Const string value.
453 vals[i], // Integer value. 453 vals[i], // Integer value.
454 vals[i], // Float value. 454 vals[i], // Float value.
455 nullptr, // Array value. 455 nullptr, // Array value.
456 nullptr, // Dictionary value. 456 nullptr, // Dictionary value.
457 nullptr); // Stream value. 457 nullptr); // Stream value.
458 } 458 }
459 } 459 }
460 { 460 {
461 // Float array. 461 // Float array.
462 float vals[] = {0.0f, 0, 10, 10.0f, 0.0345f, 462 const float vals[] = {0.0f, 0, 10, 10.0f, 0.0345f,
463 897.34f, -2.5f, -1.0f, -345.0f, -0.0f}; 463 897.34f, -2.5f, -1.0f, -345.0f, -0.0f};
464 const char* expected_str[] = {"0", "0", "10", "10", "0.0345", 464 const char* const expected_str[] = {
465 "897.34", "-2.5", "-1", "-345", "0"}; 465 "0", "0", "10", "10", "0.0345", "897.34", "-2.5", "-1", "-345", "0"};
466 ScopedArray arr(new CPDF_Array); 466 ScopedArray arr(new CPDF_Array);
467 for (size_t i = 0; i < FX_ArraySize(vals); ++i) { 467 for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
468 arr->InsertAt(i, new CPDF_Number(vals[i])); 468 arr->InsertAt(i, new CPDF_Number(vals[i]));
469 } 469 }
470 for (size_t i = 0; i < FX_ArraySize(vals); ++i) { 470 for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
471 TestArrayAccessors(arr.get(), i, // Array and index. 471 TestArrayAccessors(arr.get(), i, // Array and index.
472 expected_str[i], // String value. 472 expected_str[i], // String value.
473 nullptr, // Const string value. 473 nullptr, // Const string value.
474 vals[i], // Integer value. 474 vals[i], // Integer value.
475 vals[i], // Float value. 475 vals[i], // Float value.
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 EXPECT_EQ(arr->GetCount(), arr1->GetCount()); 736 EXPECT_EQ(arr->GetCount(), arr1->GetCount());
737 for (size_t i = 0; i < arr->GetCount(); ++i) { 737 for (size_t i = 0; i < arr->GetCount(); ++i) {
738 EXPECT_EQ(CPDF_Object::REFERENCE, arr->GetObjectAt(i)->GetType()); 738 EXPECT_EQ(CPDF_Object::REFERENCE, arr->GetObjectAt(i)->GetType());
739 EXPECT_EQ(indirect_objs[i], arr->GetObjectAt(i)->GetDirect()); 739 EXPECT_EQ(indirect_objs[i], arr->GetObjectAt(i)->GetDirect());
740 EXPECT_EQ(indirect_objs[i], arr->GetDirectObjectAt(i)); 740 EXPECT_EQ(indirect_objs[i], arr->GetDirectObjectAt(i));
741 EXPECT_EQ(CPDF_Object::REFERENCE, arr1->GetObjectAt(i)->GetType()); 741 EXPECT_EQ(CPDF_Object::REFERENCE, arr1->GetObjectAt(i)->GetType());
742 EXPECT_EQ(indirect_objs[i], arr1->GetObjectAt(i)->GetDirect()); 742 EXPECT_EQ(indirect_objs[i], arr1->GetObjectAt(i)->GetDirect());
743 EXPECT_EQ(indirect_objs[i], arr1->GetDirectObjectAt(i)); 743 EXPECT_EQ(indirect_objs[i], arr1->GetDirectObjectAt(i));
744 } 744 }
745 } 745 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_parser/cpdf_object.cpp ('k') | core/fpdfapi/fpdf_parser/include/cpdf_array.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698