summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_object_unittest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/parser/cpdf_object_unittest.cpp')
-rw-r--r--core/fpdfapi/parser/cpdf_object_unittest.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/core/fpdfapi/parser/cpdf_object_unittest.cpp b/core/fpdfapi/parser/cpdf_object_unittest.cpp
index 856dd0ac3b..78a0af7299 100644
--- a/core/fpdfapi/parser/cpdf_object_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_object_unittest.cpp
@@ -393,6 +393,18 @@ TEST_F(PDFObjectsTest, IsTypeAndAsType) {
}
}
+TEST_F(PDFObjectsTest, MakeReferenceGeneric) {
+ auto original_obj = pdfium::MakeUnique<CPDF_Null>();
+ original_obj->SetObjNum(42);
+ ASSERT_FALSE(original_obj->IsInline());
+
+ auto ref_obj = original_obj->MakeReference(m_ObjHolder.get());
+
+ ASSERT_TRUE(ref_obj->IsReference());
+ EXPECT_EQ(original_obj->GetObjNum(),
+ ToReference(ref_obj.get())->GetRefObjNum());
+}
+
TEST(PDFArrayTest, GetMatrix) {
float elems[][6] = {{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
{1, 2, 3, 4, 5, 6},
@@ -971,3 +983,18 @@ TEST(PDFDictionaryTest, ExtractObjectOnRemove) {
extracted_object = dict->RemoveFor("non_exists_object");
EXPECT_FALSE(extracted_object);
}
+
+TEST(PDFRefernceTest, MakeReferenceToReference) {
+ auto obj_holder = pdfium::MakeUnique<CPDF_IndirectObjectHolder>();
+ auto original_ref = pdfium::MakeUnique<CPDF_Reference>(obj_holder.get(), 42);
+ original_ref->SetObjNum(1952);
+ ASSERT_FALSE(original_ref->IsInline());
+
+ auto ref_obj = original_ref->MakeReference(obj_holder.get());
+
+ ASSERT_TRUE(ref_obj->IsReference());
+ // We do not allow reference to reference.
+ // New reference should have same RefObjNum.
+ EXPECT_EQ(original_ref->GetRefObjNum(),
+ ToReference(ref_obj.get())->GetRefObjNum());
+}