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,9 +14,12 @@ endobj
14 2 0 obj 14 2 0 obj
15 << 15 <<
16 /A [ 16 /A [
  17 + 9
17 1 18 1
18 5 19 5
19 - 3 20 + 10
  21 + 12
  22 + 6
20 ] 23 ]
21 /Author (Mr. Potato Head) 24 /Author (Mr. Potato Head)
22 /B << 25 /B <<
@@ -134,15 +137,15 @@ xref @@ -134,15 +137,15 @@ xref
134 0000000000 65535 f 137 0000000000 65535 f
135 0000000052 00000 n 138 0000000052 00000 n
136 0000000134 00000 n 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 trailer << 149 trailer <<
147 /Info 2 0 R 150 /Info 2 0 R
148 /QTest 3 0 R 151 /QTest 3 0 R
@@ -151,5 +154,5 @@ trailer &lt;&lt; @@ -151,5 +154,5 @@ trailer &lt;&lt;
151 /ID [<c61bd35bada064f61e0a56aa9588064e><31415926535897932384626433832795>] 154 /ID [<c61bd35bada064f61e0a56aa9588064e><31415926535897932384626433832795>]
152 >> 155 >>
153 startxref 156 startxref
154 -1265 157 +1285
155 %%EOF 158 %%EOF
qpdf/qtest/qpdf/test4-4.pdf
@@ -30,7 +30,7 @@ endobj @@ -30,7 +30,7 @@ endobj
30 30
31 4 0 obj 31 4 0 obj
32 [ 32 [
33 - 1 33 + 100
34 2 34 2
35 3 35 3
36 ] 36 ]
@@ -106,12 +106,12 @@ xref @@ -106,12 +106,12 @@ xref
106 0000000079 00000 n 106 0000000079 00000 n
107 0000000174 00000 n 107 0000000174 00000 n
108 0000000246 00000 n 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 trailer << 115 trailer <<
116 /QTest 2 0 R 116 /QTest 2 0 R
117 /Root 1 0 R 117 /Root 1 0 R
@@ -119,5 +119,5 @@ trailer &lt;&lt; @@ -119,5 +119,5 @@ trailer &lt;&lt;
119 /ID [<c61bd35bada064f61e0a56aa9588064e><c893e7330be149468080ad6518819868>] 119 /ID [<c61bd35bada064f61e0a56aa9588064e><c893e7330be149468080ad6518819868>]
120 >> 120 >>
121 startxref 121 startxref
122 -818 122 +820
123 %%EOF 123 %%EOF
qpdf/qtest/qpdf/test4-4.qdf
@@ -14,14 +14,14 @@ endobj @@ -14,14 +14,14 @@ endobj
14 2 0 obj 14 2 0 obj
15 << 15 <<
16 /A [ 16 /A [
17 - 1  
18 - 5  
19 - 3 17 + 14
  18 + 15
  19 + 9
20 ] 20 ]
21 /Author (Mr. Potato Head) 21 /Author (Mr. Potato Head)
22 /B << 22 /B <<
23 /A [ 23 /A [
24 - 1 24 + 100
25 2 25 2
26 3 26 3
27 ] 27 ]
@@ -55,7 +55,7 @@ endobj @@ -55,7 +55,7 @@ endobj
55 %% Original object ID: 4 0 55 %% Original object ID: 4 0
56 5 0 obj 56 5 0 obj
57 [ 57 [
58 - 1 58 + 100
59 2 59 2
60 3 60 3
61 ] 61 ]
@@ -134,15 +134,15 @@ xref @@ -134,15 +134,15 @@ xref
134 0000000000 65535 f 134 0000000000 65535 f
135 0000000052 00000 n 135 0000000052 00000 n
136 0000000134 00000 n 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 trailer << 146 trailer <<
147 /Info 2 0 R 147 /Info 2 0 R
148 /QTest 3 0 R 148 /QTest 3 0 R
@@ -151,5 +151,5 @@ trailer &lt;&lt; @@ -151,5 +151,5 @@ trailer &lt;&lt;
151 /ID [<c61bd35bada064f61e0a56aa9588064e><31415926535897932384626433832795>] 151 /ID [<c61bd35bada064f61e0a56aa9588064e><31415926535897932384626433832795>]
152 >> 152 >>
153 startxref 153 startxref
154 -1264 154 +1270
155 %%EOF 155 %%EOF
qpdf/test_driver.cc
@@ -284,8 +284,28 @@ void runtest(int n, char const* filename) @@ -284,8 +284,28 @@ void runtest(int n, char const* filename)
284 QPDFObjectHandle::newString("Mr. Potato Head")); 284 QPDFObjectHandle::newString("Mr. Potato Head"));
285 // qtest.A and qtest.B.A were originally the same object. 285 // qtest.A and qtest.B.A were originally the same object.
286 // They no longer are after makeDirect(). Mutate one of them 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 trailer.replaceKey("/Info", pdf.makeIndirectObject(qtest)); 309 trailer.replaceKey("/Info", pdf.makeIndirectObject(qtest));
290 QPDFWriter w(pdf, 0); 310 QPDFWriter w(pdf, 0);
291 w.setQDFMode(true); 311 w.setQDFMode(true);