Commit 91d175452d851776c98ca1ac46fec423a6926389
1 parent
db7474e0
Add testing for new array mutators
Showing
4 changed files
with
59 additions
and
36 deletions
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 << | @@ -151,5 +154,5 @@ trailer << | ||
| 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 << | @@ -119,5 +119,5 @@ trailer << | ||
| 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 << | @@ -151,5 +151,5 @@ trailer << | ||
| 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); |