57 EXPECT_EQ(Walk(pdfium::MakeRetain<CPDF_Null>()),
"Null");
58 EXPECT_EQ(Walk(pdfium::MakeRetain<CPDF_Dictionary>()),
"Dict");
59 EXPECT_EQ(Walk(pdfium::MakeRetain<CPDF_Array>()),
"Arr");
60 EXPECT_EQ(Walk(pdfium::MakeRetain<CPDF_String>()),
"Str");
61 EXPECT_EQ(Walk(pdfium::MakeRetain<CPDF_Boolean>()),
"Bool");
62 EXPECT_EQ(Walk(pdfium::MakeRetain<CPDF_Stream>(
63 pdfium::MakeRetain<CPDF_Dictionary>())),
65 EXPECT_EQ(Walk(pdfium::MakeRetain<CPDF_Reference>(
nullptr, 0)),
"Ref");
71 dict->SetFor(
"1",
pdfium::MakeRetain<CPDF_String>());
72 dict->SetFor(
"2",
pdfium::MakeRetain<CPDF_Boolean>());
74 array->Append(
pdfium::MakeRetain<CPDF_Reference>(
nullptr, 0));
75 array->Append(
pdfium::MakeRetain<CPDF_Null>());
79 const uint32_t stream_object_number = stream->GetObjNum();
80 ASSERT_GT(stream_object_number, 0u);
82 pdfium::MakeRetain<CPDF_Reference>(&holder, stream_object_number));
83 dict->SetFor(
"3",
std::move(array));
84 EXPECT_EQ(Walk(dict),
"Dict Str Bool Arr Ref Null Ref");
89 auto level_4 =
pdfium::MakeRetain<CPDF_Number>(0);
91 level_3->SetFor(
"Length",
std::move(level_4));
92 auto level_2 = holder.NewIndirect<CPDF_Stream>(
std::move(level_3));
94 const uint32_t level_2_object_number = level_2->GetObjNum();
95 ASSERT_GT(level_2_object_number, 0u);
98 pdfium::MakeRetain<CPDF_Reference>(&holder, level_2_object_number));
100 level_0->SetFor(
"Array",
std::move(level_1));
107 while (RetainPtr<
const CPDF_Object> obj = walker.GetNext()) {
109 cur_parent =
std::move(obj);
116 root_array->AppendNew<CPDF_Null>();
117 root_array->AppendNew<CPDF_Null>();
120 root_array->Append(root_array->Clone());
122 int non_array_objects = 0;
124 while (RetainPtr<
const CPDF_Object> obj = walker.GetNext()) {
125 if (obj != root_array && obj->IsArray()) {
133 EXPECT_EQ(2, non_array_objects);