Commit c227249ef157f8db4437f8a1993e25d4bc349a4d

Authored by Jay Berkenbilt
1 parent abb53ac3

Added test code for Tobias's changes

ChangeLog
  1 +2012-07-04 Jay Berkenbilt <ejb@ql.org>
  2 +
  3 + * Accept changes from Tobias Hoffmann: add public method
  4 + QPDF::pushInheritedAttributesToPage including warnings for
  5 + non-inherited keys that may be discarded from /Pages by
  6 + non-conformant PDF files when the /Pages tree is flattened.
  7 +
1 2012-06-27 Jay Berkenbilt <ejb@ql.org> 8 2012-06-27 Jay Berkenbilt <ejb@ql.org>
2 9
3 * Add Pl_Concatenate pipeline for stream concatenation also 10 * Add Pl_Concatenate pipeline for stream concatenation also
qpdf/qtest/qpdf.test
@@ -149,7 +149,7 @@ $td-&gt;runtest(&quot;remove page we don&#39;t have&quot;, @@ -149,7 +149,7 @@ $td-&gt;runtest(&quot;remove page we don&#39;t have&quot;,
149 $td->NORMALIZE_NEWLINES); 149 $td->NORMALIZE_NEWLINES);
150 # ---------- 150 # ----------
151 $td->notify("--- Miscellaneous Tests ---"); 151 $td->notify("--- Miscellaneous Tests ---");
152 -$n_tests += 40; 152 +$n_tests += 41;
153 153
154 $td->runtest("qpdf version", 154 $td->runtest("qpdf version",
155 {$td->COMMAND => "qpdf --version"}, 155 {$td->COMMAND => "qpdf --version"},
@@ -354,6 +354,10 @@ $td-&gt;runtest(&quot;shallow copy a stream&quot;, @@ -354,6 +354,10 @@ $td-&gt;runtest(&quot;shallow copy a stream&quot;,
354 {$td->COMMAND => "test_driver 21 shallow_array.pdf"}, 354 {$td->COMMAND => "test_driver 21 shallow_array.pdf"},
355 {$td->FILE => "shallow_stream.out", $td->EXIT_STATUS => 2}, 355 {$td->FILE => "shallow_stream.out", $td->EXIT_STATUS => 2},
356 $td->NORMALIZE_NEWLINES); 356 $td->NORMALIZE_NEWLINES);
  357 +$td->runtest("warn for unknown key in Pages",
  358 + {$td->COMMAND => "test_driver 23 lin-special.pdf"},
  359 + {$td->FILE => "pages-warning.out", $td->EXIT_STATUS => 0},
  360 + $td->NORMALIZE_NEWLINES);
357 361
358 show_ntests(); 362 show_ntests();
359 # ---------- 363 # ----------
qpdf/qtest/qpdf/lin-special.disable.exp
No preview for this file type
qpdf/qtest/qpdf/lin-special.generate.exp
No preview for this file type
qpdf/qtest/qpdf/lin-special.pdf
@@ -22,13 +22,16 @@ @@ -22,13 +22,16 @@
22 % +---- page 5 22 % +---- page 5
23 % 23 %
24 % Node (A) defines /MediaBox (direct) and /Resources (indirect) 24 % Node (A) defines /MediaBox (direct) and /Resources (indirect)
25 -% Node (B) overrides /MediaBox 25 +% Node (B) overrides /MediaBox and defines /Rotate
  26 +% Node (B) defines /Quack, a non-standard key, which is not inherited
26 % Page 1 overrides /Resources 27 % Page 1 overrides /Resources
27 % Page 4 overrides /Resources 28 % Page 4 overrides /Resources
28 -% Page 5 overrides /MediaBox 29 +% Page 5 overrides /MediaBox and /Rotate
29 % 30 %
30 % Page 5 provides the case of two levels of shadowing on a resource. 31 % Page 5 provides the case of two levels of shadowing on a resource.
31 % 32 %
  33 +% Node (B)'s overriding of /Rotate exercises inheriting a scalar.
  34 +%
32 % The /MediaBox defined in node (B) is shared between pages 3 and 4 35 % The /MediaBox defined in node (B) is shared between pages 3 and 4
33 % but not page 1. The /MediaBox defined in node (A) is shared between 36 % but not page 1. The /MediaBox defined in node (A) is shared between
34 % pages 1 and 2 only. 37 % pages 1 and 2 only.
@@ -58,6 +61,7 @@ endobj @@ -58,6 +61,7 @@ endobj
58 >> 61 >>
59 endobj 62 endobj
60 63
  64 +% Node (A)
61 3 0 obj 65 3 0 obj
62 << 66 <<
63 /Count 5 67 /Count 5
@@ -73,7 +77,6 @@ endobj @@ -73,7 +77,6 @@ endobj
73 792 77 792
74 ] 78 ]
75 /Resources 7 0 R 79 /Resources 7 0 R
76 - /Quack 16059  
77 /Type /Pages 80 /Type /Pages
78 >> 81 >>
79 endobj 82 endobj
@@ -97,6 +100,7 @@ endobj @@ -97,6 +100,7 @@ endobj
97 >> 100 >>
98 endobj 101 endobj
99 102
  103 +% Node (B)
100 6 0 obj 104 6 0 obj
101 << 105 <<
102 /Count 3 106 /Count 3
@@ -112,6 +116,8 @@ endobj @@ -112,6 +116,8 @@ endobj
112 396 116 396
113 ] 117 ]
114 /Parent 3 0 R 118 /Parent 3 0 R
  119 + /Rotate 0
  120 + /Quack 16059
115 /Type /Pages 121 /Type /Pages
116 >> 122 >>
117 endobj 123 endobj
@@ -205,6 +211,7 @@ endobj @@ -205,6 +211,7 @@ endobj
205 306 211 306
206 396 212 396
207 ] 213 ]
  214 + /Rotate 180
208 /Parent 6 0 R 215 /Parent 6 0 R
209 /Type /Page 216 /Type /Page
210 >> 217 >>
@@ -316,39 +323,39 @@ endobj @@ -316,39 +323,39 @@ endobj
316 xref 323 xref
317 0 29 324 0 29
318 0000000000 65535 f 325 0000000000 65535 f
319 -0000001161 00000 n  
320 -0000001244 00000 n  
321 -0000001319 00000 n  
322 -0000001501 00000 n  
323 -0000001601 00000 n  
324 -0000001672 00000 n  
325 -0000001829 00000 n  
326 -0000001923 00000 n  
327 -0000002024 00000 n  
328 -0000002043 00000 n  
329 -0000002138 00000 n  
330 -0000002241 00000 n  
331 -0000002271 00000 n  
332 -0000002366 00000 n  
333 -0000002526 00000 n  
334 -0000002644 00000 n  
335 -0000002763 00000 n  
336 -0000002799 00000 n  
337 -0000002947 00000 n  
338 -0000003050 00000 n  
339 -0000003093 00000 n  
340 -0000003196 00000 n  
341 -0000003216 00000 n  
342 -0000003359 00000 n  
343 -0000003462 00000 n  
344 -0000003482 00000 n  
345 -0000003504 00000 n  
346 -0000003526 00000 n 326 +0000001331 00000 n
  327 +0000001414 00000 n
  328 +0000001500 00000 n
  329 +0000001667 00000 n
  330 +0000001767 00000 n
  331 +0000001849 00000 n
  332 +0000002033 00000 n
  333 +0000002127 00000 n
  334 +0000002228 00000 n
  335 +0000002247 00000 n
  336 +0000002342 00000 n
  337 +0000002445 00000 n
  338 +0000002475 00000 n
  339 +0000002570 00000 n
  340 +0000002730 00000 n
  341 +0000002862 00000 n
  342 +0000002981 00000 n
  343 +0000003017 00000 n
  344 +0000003165 00000 n
  345 +0000003268 00000 n
  346 +0000003311 00000 n
  347 +0000003414 00000 n
  348 +0000003434 00000 n
  349 +0000003577 00000 n
  350 +0000003680 00000 n
  351 +0000003700 00000 n
  352 +0000003722 00000 n
  353 +0000003744 00000 n
347 trailer << 354 trailer <<
348 /Root 1 0 R 355 /Root 1 0 R
349 /Size 29 356 /Size 29
350 /ID [<ce9551b56c5a7e3b5b0ba6fa0d281296><a74aa55a69070b600e39f9ed1ed6c4df>] 357 /ID [<ce9551b56c5a7e3b5b0ba6fa0d281296><a74aa55a69070b600e39f9ed1ed6c4df>]
351 >> 358 >>
352 startxref 359 startxref
353 -3545 360 +3763
354 %%EOF 361 %%EOF
qpdf/qtest/qpdf/lin-special.preserve.exp
No preview for this file type
qpdf/qtest/qpdf/pages-warning.out 0 → 100644
  1 +WARNING: lin-special.pdf (Pages object: object 6 0): Unknown key /Quack in /Pages object is being discarded as a result of flattening the /Pages tree
  2 +test 23 done
qpdf/test_driver.cc
@@ -832,6 +832,12 @@ void runtest(int n, char const* filename) @@ -832,6 +832,12 @@ void runtest(int n, char const* filename)
832 pdf.removePage(page); 832 pdf.removePage(page);
833 std::cout << "you can't see this" << std::endl; 833 std::cout << "you can't see this" << std::endl;
834 } 834 }
  835 + else if (n == 23)
  836 + {
  837 + // Try to remove a page we don't have
  838 + std::vector<QPDFObjectHandle> const& pages = pdf.getAllPages();
  839 + pdf.removePage(pages.back());
  840 + }
835 else 841 else
836 { 842 {
837 throw std::runtime_error(std::string("invalid test ") + 843 throw std::runtime_error(std::string("invalid test ") +