| OLD | NEW | 
|    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/parser/cpdf_array.h" |    5 #include "core/fpdfapi/parser/cpdf_array.h" | 
|    6 #include "core/fpdfapi/parser/cpdf_boolean.h" |    6 #include "core/fpdfapi/parser/cpdf_boolean.h" | 
|    7 #include "core/fpdfapi/parser/cpdf_dictionary.h" |    7 #include "core/fpdfapi/parser/cpdf_dictionary.h" | 
|    8 #include "core/fpdfapi/parser/cpdf_name.h" |    8 #include "core/fpdfapi/parser/cpdf_name.h" | 
|    9 #include "core/fpdfapi/parser/cpdf_null.h" |    9 #include "core/fpdfapi/parser/cpdf_null.h" | 
|   10 #include "core/fpdfapi/parser/cpdf_number.h" |   10 #include "core/fpdfapi/parser/cpdf_number.h" | 
| (...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  762   CPDF_Object* cloned_array_object = array->CloneDirectObject(); |  762   CPDF_Object* cloned_array_object = array->CloneDirectObject(); | 
|  763   ASSERT_TRUE(cloned_array_object); |  763   ASSERT_TRUE(cloned_array_object); | 
|  764   ASSERT_TRUE(cloned_array_object->IsArray()); |  764   ASSERT_TRUE(cloned_array_object->IsArray()); | 
|  765  |  765  | 
|  766   ScopedArray cloned_array(cloned_array_object->AsArray()); |  766   ScopedArray cloned_array(cloned_array_object->AsArray()); | 
|  767   ASSERT_EQ(1U, cloned_array->GetCount()); |  767   ASSERT_EQ(1U, cloned_array->GetCount()); | 
|  768   CPDF_Object* cloned_obj = cloned_array->GetObjectAt(0); |  768   CPDF_Object* cloned_obj = cloned_array->GetObjectAt(0); | 
|  769   EXPECT_FALSE(cloned_obj); |  769   EXPECT_FALSE(cloned_obj); | 
|  770 } |  770 } | 
|  771  |  771  | 
 |  772 TEST(PDFArrayTest, ConvertIndirect) { | 
 |  773   CPDF_IndirectObjectHolder objects_holder; | 
 |  774   ScopedArray array(new CPDF_Array); | 
 |  775   CPDF_Object* pObj = new CPDF_Number(42); | 
 |  776   array->Add(pObj); | 
 |  777   array->ConvertToIndirectObjectAt(0, &objects_holder); | 
 |  778   CPDF_Object* pRef = array->GetObjectAt(0); | 
 |  779   CPDF_Object* pNum = array->GetDirectObjectAt(0); | 
 |  780   EXPECT_TRUE(pRef->IsReference()); | 
 |  781   EXPECT_TRUE(pNum->IsNumber()); | 
 |  782   EXPECT_NE(pObj, pRef); | 
 |  783   EXPECT_EQ(pObj, pNum); | 
 |  784   EXPECT_EQ(42, array->GetIntegerAt(0)); | 
 |  785 } | 
 |  786  | 
|  772 TEST(PDFDictionaryTest, CloneDirectObject) { |  787 TEST(PDFDictionaryTest, CloneDirectObject) { | 
|  773   CPDF_IndirectObjectHolder objects_holder; |  788   CPDF_IndirectObjectHolder objects_holder; | 
|  774   ScopedDict dict(new CPDF_Dictionary()); |  789   ScopedDict dict(new CPDF_Dictionary()); | 
|  775   dict->SetReferenceFor("foo", &objects_holder, 1234); |  790   dict->SetReferenceFor("foo", &objects_holder, 1234); | 
|  776   ASSERT_EQ(1U, dict->GetCount()); |  791   ASSERT_EQ(1U, dict->GetCount()); | 
|  777   CPDF_Object* obj = dict->GetObjectFor("foo"); |  792   CPDF_Object* obj = dict->GetObjectFor("foo"); | 
|  778   ASSERT_TRUE(obj); |  793   ASSERT_TRUE(obj); | 
|  779   EXPECT_TRUE(obj->IsReference()); |  794   EXPECT_TRUE(obj->IsReference()); | 
|  780  |  795  | 
|  781   CPDF_Object* cloned_dict_object = dict->CloneDirectObject(); |  796   CPDF_Object* cloned_dict_object = dict->CloneDirectObject(); | 
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  844     // Cloned object should be the same as the original. |  859     // Cloned object should be the same as the original. | 
|  845     ASSERT_TRUE(cloned_dict); |  860     ASSERT_TRUE(cloned_dict); | 
|  846     CPDF_Object* cloned_arr = cloned_dict->GetObjectFor("arr"); |  861     CPDF_Object* cloned_arr = cloned_dict->GetObjectFor("arr"); | 
|  847     ASSERT_TRUE(cloned_arr); |  862     ASSERT_TRUE(cloned_arr); | 
|  848     ASSERT_TRUE(cloned_arr->IsArray()); |  863     ASSERT_TRUE(cloned_arr->IsArray()); | 
|  849     EXPECT_EQ(1u, cloned_arr->AsArray()->GetCount()); |  864     EXPECT_EQ(1u, cloned_arr->AsArray()->GetCount()); | 
|  850     // Recursively referenced object is not cloned. |  865     // Recursively referenced object is not cloned. | 
|  851     EXPECT_EQ(nullptr, cloned_arr->AsArray()->GetObjectAt(0)); |  866     EXPECT_EQ(nullptr, cloned_arr->AsArray()->GetObjectAt(0)); | 
|  852   } |  867   } | 
|  853 } |  868 } | 
 |  869  | 
 |  870 TEST(PDFDictionaryTest, ConvertIndirect) { | 
 |  871   CPDF_IndirectObjectHolder objects_holder; | 
 |  872   ScopedDict dict(new CPDF_Dictionary); | 
 |  873   CPDF_Object* pObj = new CPDF_Number(42); | 
 |  874   dict->SetFor("clams", pObj); | 
 |  875   dict->ConvertToIndirectObjectFor("clams", &objects_holder); | 
 |  876   CPDF_Object* pRef = dict->GetObjectFor("clams"); | 
 |  877   CPDF_Object* pNum = dict->GetDirectObjectFor("clams"); | 
 |  878   EXPECT_TRUE(pRef->IsReference()); | 
 |  879   EXPECT_TRUE(pNum->IsNumber()); | 
 |  880   EXPECT_NE(pObj, pRef); | 
 |  881   EXPECT_EQ(pObj, pNum); | 
 |  882   EXPECT_EQ(42, dict->GetIntegerFor("clams")); | 
 |  883 } | 
| OLD | NEW |