Commit 91d175452d851776c98ca1ac46fec423a6926389

Authored by Jay Berkenbilt
1 parent db7474e0

Add testing for new array mutators

qpdf/qtest/qpdf/test4-1.qdf
... ... @@ -14,9 +14,12 @@ endobj
14 14 2 0 obj
15 15 <<
16 16 /A [
  17 + 9
17 18 1
18 19 5
19   - 3
  20 + 10
  21 + 12
  22 + 6
20 23 ]
21 24 /Author (Mr. Potato Head)
22 25 /B <<
... ... @@ -134,15 +137,15 @@ xref
134 137 0000000000 65535 f
135 138 0000000052 00000 n
136 139 0000000134 00000 n
137   -0000000333 00000 n
138   -0000000455 00000 n
139   -0000000555 00000 n
140   -0000000615 00000 n
141   -0000000694 00000 n
142   -0000000938 00000 n
143   -0000001037 00000 n
144   -0000001083 00000 n
145   -0000001229 00000 n
  140 +0000000353 00000 n
  141 +0000000475 00000 n
  142 +0000000575 00000 n
  143 +0000000635 00000 n
  144 +0000000714 00000 n
  145 +0000000958 00000 n
  146 +0000001057 00000 n
  147 +0000001103 00000 n
  148 +0000001249 00000 n
146 149 trailer <<
147 150 /Info 2 0 R
148 151 /QTest 3 0 R
... ... @@ -151,5 +154,5 @@ trailer &lt;&lt;
151 154 /ID [<c61bd35bada064f61e0a56aa9588064e><31415926535897932384626433832795>]
152 155 >>
153 156 startxref
154   -1265
  157 +1285
155 158 %%EOF
... ...
qpdf/qtest/qpdf/test4-4.pdf
... ... @@ -30,7 +30,7 @@ endobj
30 30  
31 31 4 0 obj
32 32 [
33   - 1
  33 + 100
34 34 2
35 35 3
36 36 ]
... ... @@ -106,12 +106,12 @@ xref
106 106 0000000079 00000 n
107 107 0000000174 00000 n
108 108 0000000246 00000 n
109   -0000000278 00000 n
110   -0000000330 00000 n
111   -0000000546 00000 n
112   -0000000645 00000 n
113   -0000000664 00000 n
114   -0000000782 00000 n
  109 +0000000280 00000 n
  110 +0000000332 00000 n
  111 +0000000548 00000 n
  112 +0000000647 00000 n
  113 +0000000666 00000 n
  114 +0000000784 00000 n
115 115 trailer <<
116 116 /QTest 2 0 R
117 117 /Root 1 0 R
... ... @@ -119,5 +119,5 @@ trailer &lt;&lt;
119 119 /ID [<c61bd35bada064f61e0a56aa9588064e><c893e7330be149468080ad6518819868>]
120 120 >>
121 121 startxref
122   -818
  122 +820
123 123 %%EOF
... ...
qpdf/qtest/qpdf/test4-4.qdf
... ... @@ -14,14 +14,14 @@ endobj
14 14 2 0 obj
15 15 <<
16 16 /A [
17   - 1
18   - 5
19   - 3
  17 + 14
  18 + 15
  19 + 9
20 20 ]
21 21 /Author (Mr. Potato Head)
22 22 /B <<
23 23 /A [
24   - 1
  24 + 100
25 25 2
26 26 3
27 27 ]
... ... @@ -55,7 +55,7 @@ endobj
55 55 %% Original object ID: 4 0
56 56 5 0 obj
57 57 [
58   - 1
  58 + 100
59 59 2
60 60 3
61 61 ]
... ... @@ -134,15 +134,15 @@ xref
134 134 0000000000 65535 f
135 135 0000000052 00000 n
136 136 0000000134 00000 n
137   -0000000333 00000 n
138   -0000000455 00000 n
139   -0000000554 00000 n
140   -0000000613 00000 n
141   -0000000692 00000 n
142   -0000000936 00000 n
143   -0000001035 00000 n
144   -0000001081 00000 n
145   -0000001228 00000 n
  137 +0000000337 00000 n
  138 +0000000459 00000 n
  139 +0000000558 00000 n
  140 +0000000619 00000 n
  141 +0000000698 00000 n
  142 +0000000942 00000 n
  143 +0000001041 00000 n
  144 +0000001087 00000 n
  145 +0000001234 00000 n
146 146 trailer <<
147 147 /Info 2 0 R
148 148 /QTest 3 0 R
... ... @@ -151,5 +151,5 @@ trailer &lt;&lt;
151 151 /ID [<c61bd35bada064f61e0a56aa9588064e><31415926535897932384626433832795>]
152 152 >>
153 153 startxref
154   -1264
  154 +1270
155 155 %%EOF
... ...
qpdf/test_driver.cc
... ... @@ -284,8 +284,28 @@ void runtest(int n, char const* filename)
284 284 QPDFObjectHandle::newString("Mr. Potato Head"));
285 285 // qtest.A and qtest.B.A were originally the same object.
286 286 // They no longer are after makeDirect(). Mutate one of them
287   - // and ensure the other is not changed.
288   - qtest.getKey("/A").setArrayItem(1, QPDFObjectHandle::newInteger(5));
  287 + // and ensure the other is not changed. These test cases are
  288 + // crafted around a specific set of input files.
  289 + QPDFObjectHandle A = qtest.getKey("/A");
  290 + if (A.getArrayItem(0).getIntValue() == 1)
  291 + {
  292 + // Test mutators
  293 + A.setArrayItem(1, QPDFObjectHandle::newInteger(5)); // 1 5 3
  294 + A.insertItem(2, QPDFObjectHandle::newInteger(10)); // 1 5 10 3
  295 + A.appendItem(QPDFObjectHandle::newInteger(12)); // 1 5 10 3 12
  296 + A.eraseItem(3); // 1 5 10 12
  297 + A.insertItem(4, QPDFObjectHandle::newInteger(6)); // 1 5 10 12 6
  298 + A.insertItem(0, QPDFObjectHandle::newInteger(9)); // 9 1 5 10 12 6
  299 + }
  300 + else
  301 + {
  302 + std::vector<QPDFObjectHandle> items;
  303 + items.push_back(QPDFObjectHandle::newInteger(14));
  304 + items.push_back(QPDFObjectHandle::newInteger(15));
  305 + items.push_back(QPDFObjectHandle::newInteger(9));
  306 + A.setArrayFromVector(items);
  307 + }
  308 +
289 309 trailer.replaceKey("/Info", pdf.makeIndirectObject(qtest));
290 310 QPDFWriter w(pdf, 0);
291 311 w.setQDFMode(true);
... ...