19 arr->AppendNew<CPDF_Boolean>(
true);
20 arr->AppendNew<CPDF_Boolean>(
false);
21 arr->AppendNew<CPDF_Number>(100);
22 arr->AppendNew<CPDF_Number>(0);
24 ASSERT_EQ(4u, arr->size());
25 EXPECT_TRUE(arr->GetBooleanAt(0,
true));
26 EXPECT_TRUE(arr->GetBooleanAt(0,
false));
27 EXPECT_FALSE(arr->GetBooleanAt(1,
true));
28 EXPECT_FALSE(arr->GetBooleanAt(1,
false));
29 EXPECT_TRUE(arr->GetBooleanAt(2,
true));
30 EXPECT_FALSE(arr->GetBooleanAt(2,
false));
31 EXPECT_TRUE(arr->GetBooleanAt(3,
true));
32 EXPECT_FALSE(arr->GetBooleanAt(3,
false));
33 EXPECT_TRUE(arr->GetBooleanAt(99,
true));
34 EXPECT_FALSE(arr->GetBooleanAt(99,
false));
40 for (
const int elem : {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) {
41 arr->AppendNew<CPDF_Number>(elem);
43 for (size_t i = 0; i < 3; ++i)
45 constexpr std::array<
int, 7> expected = {{1, 2, 3, 7, 8, 9, 10}};
46 ASSERT_EQ(expected.size(), arr->size());
47 for (size_t i = 0; i < expected.size(); ++i) {
48 EXPECT_EQ(expected[i], arr->GetIntegerAt(i));
52 constexpr std::array<
int, 5> expected2 = {{1, 2, 3, 7, 10}};
53 ASSERT_EQ(
std::size(expected2), arr->size());
54 for (size_t i = 0; i <
std::size(expected2); ++i)
55 EXPECT_EQ(expected2[i], arr->GetIntegerAt(i));
60 for (
const int elem : {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) {
61 arr->AppendNew<CPDF_Number>(elem);
63 EXPECT_EQ(10u, arr->size());
65 EXPECT_EQ(10u, arr->size());
87 constexpr std::array<
int, 10> elems = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}};
89 for (size_t i = 0; i <
std::size(elems); ++i) {
90 arr->InsertNewAt<CPDF_Number>(i, elems[i]);
92 ASSERT_EQ(
std::size(elems), arr->size());
93 for (size_t i = 0; i <
std::size(elems); ++i) {
94 EXPECT_EQ(elems[i], arr->GetIntegerAt(i));
96 arr->InsertNewAt<CPDF_Number>(3, 33);
97 arr->InsertNewAt<CPDF_Number>(6, 55);
98 arr->InsertNewAt<CPDF_Number>(12, 12);
99 constexpr std::array<
int, 13> expected = {
100 {1, 2, 3, 33, 4, 5, 55, 6, 7, 8, 9, 10, 12}};
101 ASSERT_EQ(expected.size(), arr->size());
102 for (size_t i = 0; i < expected.size(); ++i) {
103 EXPECT_EQ(expected[i], arr->GetIntegerAt(i));
117 constexpr std::array<
int, 10> elems = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}};
119 for (size_t i = 0; i <
std::size(elems); ++i) {
120 arr->InsertNewAt<CPDF_Number>(i, elems[i]);
123 ASSERT_EQ(arr->size(), arr2->size());
124 for (size_t i = 0; i <
std::size(elems); ++i) {
126 EXPECT_NE(arr->GetObjectAt(i), arr2->GetObjectAt(i));
127 EXPECT_EQ(arr->GetIntegerAt(i), arr2->GetIntegerAt(i));
132 static const size_t kNumOfRows = 3;
133 static const size_t kNumOfColumns = 5;
134 using ElemRow = std::array<
int, kNumOfColumns>;
135 constexpr std::array<ElemRow, kNumOfRows> elems = {{
138 {{11, 12, 13, 14, 15}},
143 for (size_t i = 0; i < kNumOfRows; ++i) {
145 for (size_t j = 0; j < kNumOfColumns; ++j) {
146 auto obj =
pdfium::MakeRetain<CPDF_Number>(elems[i][j]);
148 int obj_num = i * kNumOfColumns + j + 1;
149 obj_holder->ReplaceIndirectObjectIfHigherGeneration(obj_num,
151 arr_elem->InsertNewAt<CPDF_Reference>(j, obj_holder.get(), obj_num);
153 arr->InsertAt(i,
std::move(arr_elem));
155 ASSERT_EQ(kNumOfRows, arr->size());
159 ASSERT_EQ(arr->size(), arr1->size());
162 ASSERT_EQ(arr->size(), arr2->size());
163 for (size_t i = 0; i < kNumOfRows; ++i) {
164 const CPDF_Array* arr_elem = arr->GetObjectAt(i)->AsArray();
165 const CPDF_Array* arr1_elem = arr1->GetObjectAt(i)->AsArray();
166 const CPDF_Array* arr2_elem = arr2->GetObjectAt(i)->AsArray();
167 EXPECT_NE(arr_elem, arr1_elem);
168 EXPECT_NE(arr_elem, arr2_elem);
169 for (size_t j = 0; j < kNumOfColumns; ++j) {
170 auto elem_obj = arr_elem->GetObjectAt(j);
171 auto elem_obj1 = arr1_elem->GetObjectAt(j);
172 auto elem_obj2 = arr2_elem->GetObjectAt(j);
174 EXPECT_NE(elem_obj, elem_obj1);
175 EXPECT_TRUE(elem_obj1->IsReference());
176 EXPECT_EQ(elem_obj->GetDirect(), elem_obj1->GetDirect());
177 EXPECT_EQ(elem_obj->GetInteger(), elem_obj1->GetInteger());
179 EXPECT_NE(elem_obj, elem_obj2);
180 EXPECT_TRUE(elem_obj2->IsNumber());
181 EXPECT_NE(elem_obj->GetDirect(), elem_obj2);
182 EXPECT_EQ(elem_obj->GetObjNum(), elem_obj2->GetObjNum());
183 EXPECT_EQ(elem_obj->GetInteger(), elem_obj2->GetInteger());
187 ASSERT_EQ(kNumOfRows, arr1->size());
188 for (size_t i = 0; i < kNumOfRows; ++i) {
189 for (size_t j = 0; j < kNumOfColumns; ++j) {
191 auto elem_obj1 = arr1->GetObjectAt(i)->AsArray()->GetObjectAt(j);
192 EXPECT_TRUE(elem_obj1->IsReference());
193 EXPECT_EQ(elems[i][j], elem_obj1->GetInteger());
195 EXPECT_EQ(elems[i][j],
196 arr2->GetObjectAt(i)->AsArray()->GetIntegerAt(j));
210 std::optional<size_t> maybe_found = arr->Find(
nullptr);
211 EXPECT_FALSE(maybe_found.has_value());
213 maybe_found = arr->Find(dict0.Get());
214 ASSERT_TRUE(maybe_found.has_value());
215 EXPECT_EQ(0u, maybe_found.value());
217 maybe_found = arr->Find(dict1.Get());
218 ASSERT_TRUE(maybe_found.has_value());
219 EXPECT_EQ(1u, maybe_found.value());
221 maybe_found = arr->Find(dict2.Get());
222 EXPECT_FALSE(maybe_found.has_value());