aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2024-02-10 17:59:20 +0100
committerm-holger <m-holger@kubitscheck.org>2024-02-16 11:53:52 +0100
commitd28969bf375d75ff7c1b911d84708727510a7a8a (patch)
tree4362e2b395b1559b61ed8117eb636e0d0a5897ff
parent431987475b392daf4094570565881e1ebfc9528a (diff)
downloadqpdf-d28969bf375d75ff7c1b911d84708727510a7a8a.tar.zst
Add additional sparse array JSON tests
-rw-r--r--qpdf/qtest/many-nulls.test19
-rw-r--r--qpdf/qtest/qpdf/minimal-nulls-1.json453
-rw-r--r--qpdf/qtest/qpdf/minimal-nulls-2.json424
-rw-r--r--qpdf/qtest/qpdf/minimal-nulls.pdf387
4 files changed, 1282 insertions, 1 deletions
diff --git a/qpdf/qtest/many-nulls.test b/qpdf/qtest/many-nulls.test
index 8a723d53..26ce5f8a 100644
--- a/qpdf/qtest/many-nulls.test
+++ b/qpdf/qtest/many-nulls.test
@@ -33,5 +33,22 @@ $td->runtest("copy sparse array",
{$td->COMMAND => "test_driver 97 many-nulls.pdf"},
{$td->STRING => "test 97 done\n", $td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
+$td->runtest("copy file with many nulls",
+ {$td->COMMAND =>
+ "qpdf minimal-nulls.pdf --qdf --static-id --no-original-object-ids a.pdf"},
+ {$td->STRING => "", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+$td->runtest("compare files",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "minimal-nulls.pdf"});
+$td->runtest("file with many nulls to JSON v1",
+ {$td->COMMAND => "qpdf minimal-nulls.pdf --json=1 -"},
+ {$td->FILE => "minimal-nulls-1.json", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+$td->runtest("file with many nulls to JSON v2",
+ {$td->COMMAND => "qpdf minimal-nulls.pdf --json=2 -"},
+ {$td->FILE => "minimal-nulls-2.json", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+
cleanup();
-$td->report(4);
+$td->report(8);
diff --git a/qpdf/qtest/qpdf/minimal-nulls-1.json b/qpdf/qtest/qpdf/minimal-nulls-1.json
new file mode 100644
index 00000000..0b8f6e53
--- /dev/null
+++ b/qpdf/qtest/qpdf/minimal-nulls-1.json
@@ -0,0 +1,453 @@
+{
+ "version": 1,
+ "parameters": {
+ "decodelevel": "generalized"
+ },
+ "pages": [
+ {
+ "contents": [
+ "4 0 R"
+ ],
+ "images": [],
+ "label": null,
+ "object": "3 0 R",
+ "outlines": [],
+ "pageposfrom1": 1
+ }
+ ],
+ "pagelabels": [],
+ "acroform": {
+ "fields": [],
+ "hasacroform": false,
+ "needappearances": false
+ },
+ "attachments": {},
+ "encrypt": {
+ "capabilities": {
+ "accessibility": true,
+ "extract": true,
+ "moddifyannotations": true,
+ "modify": true,
+ "modifyassembly": true,
+ "modifyforms": true,
+ "modifyother": true,
+ "printhigh": true,
+ "printlow": true
+ },
+ "encrypted": false,
+ "ownerpasswordmatched": false,
+ "parameters": {
+ "P": 0,
+ "R": 0,
+ "V": 0,
+ "bits": 0,
+ "filemethod": "none",
+ "key": null,
+ "method": "none",
+ "streammethod": "none",
+ "stringmethod": "none"
+ },
+ "recovereduserpassword": null,
+ "userpasswordmatched": false
+ },
+ "outlines": [],
+ "objects": {
+ "1 0 R": {
+ "/Pages": "2 0 R",
+ "/Type": "/Catalog"
+ },
+ "2 0 R": {
+ "/Count": 1,
+ "/Kids": [
+ "3 0 R"
+ ],
+ "/Type": "/Pages"
+ },
+ "3 0 R": {
+ "/Contents": "4 0 R",
+ "/MediaBox": [
+ 0,
+ 0,
+ 612,
+ 792
+ ],
+ "/Nulls": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ "6 0 R",
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ],
+ "/Parent": "2 0 R",
+ "/Resources": {
+ "/Font": {
+ "/F1": "7 0 R"
+ },
+ "/ProcSet": "8 0 R"
+ },
+ "/Type": "/Page"
+ },
+ "4 0 R": {
+ "/Length": "5 0 R"
+ },
+ "5 0 R": 44,
+ "6 0 R": null,
+ "7 0 R": {
+ "/BaseFont": "/Helvetica",
+ "/Encoding": "/WinAnsiEncoding",
+ "/Name": "/F1",
+ "/Subtype": "/Type1",
+ "/Type": "/Font"
+ },
+ "8 0 R": [
+ "/PDF",
+ "/Text"
+ ],
+ "trailer": {
+ "/ID": [
+ "ÏîgE�EMÛ‹Êߢ$²\u0005#",
+ "1AY&SXŠfi#—bd3…'Ł"
+ ],
+ "/Root": "1 0 R",
+ "/Size": 9
+ }
+ },
+ "objectinfo": {
+ "1 0 R": {
+ "stream": {
+ "filter": null,
+ "is": false,
+ "length": null
+ }
+ },
+ "2 0 R": {
+ "stream": {
+ "filter": null,
+ "is": false,
+ "length": null
+ }
+ },
+ "3 0 R": {
+ "stream": {
+ "filter": null,
+ "is": false,
+ "length": null
+ }
+ },
+ "4 0 R": {
+ "stream": {
+ "filter": null,
+ "is": true,
+ "length": 44
+ }
+ },
+ "5 0 R": {
+ "stream": {
+ "filter": null,
+ "is": false,
+ "length": null
+ }
+ },
+ "6 0 R": {
+ "stream": {
+ "filter": null,
+ "is": false,
+ "length": null
+ }
+ },
+ "7 0 R": {
+ "stream": {
+ "filter": null,
+ "is": false,
+ "length": null
+ }
+ },
+ "8 0 R": {
+ "stream": {
+ "filter": null,
+ "is": false,
+ "length": null
+ }
+ }
+ }
+}
diff --git a/qpdf/qtest/qpdf/minimal-nulls-2.json b/qpdf/qtest/qpdf/minimal-nulls-2.json
new file mode 100644
index 00000000..6bf61ea7
--- /dev/null
+++ b/qpdf/qtest/qpdf/minimal-nulls-2.json
@@ -0,0 +1,424 @@
+{
+ "version": 2,
+ "parameters": {
+ "decodelevel": "generalized"
+ },
+ "pages": [
+ {
+ "contents": [
+ "4 0 R"
+ ],
+ "images": [],
+ "label": null,
+ "object": "3 0 R",
+ "outlines": [],
+ "pageposfrom1": 1
+ }
+ ],
+ "pagelabels": [],
+ "acroform": {
+ "fields": [],
+ "hasacroform": false,
+ "needappearances": false
+ },
+ "attachments": {},
+ "encrypt": {
+ "capabilities": {
+ "accessibility": true,
+ "extract": true,
+ "modify": true,
+ "modifyannotations": true,
+ "modifyassembly": true,
+ "modifyforms": true,
+ "modifyother": true,
+ "printhigh": true,
+ "printlow": true
+ },
+ "encrypted": false,
+ "ownerpasswordmatched": false,
+ "parameters": {
+ "P": 0,
+ "R": 0,
+ "V": 0,
+ "bits": 0,
+ "filemethod": "none",
+ "key": null,
+ "method": "none",
+ "streammethod": "none",
+ "stringmethod": "none"
+ },
+ "recovereduserpassword": null,
+ "userpasswordmatched": false
+ },
+ "outlines": [],
+ "qpdf": [
+ {
+ "jsonversion": 2,
+ "pdfversion": "1.3",
+ "pushedinheritedpageresources": false,
+ "calledgetallpages": true,
+ "maxobjectid": 8
+ },
+ {
+ "obj:1 0 R": {
+ "value": {
+ "/Pages": "2 0 R",
+ "/Type": "/Catalog"
+ }
+ },
+ "obj:2 0 R": {
+ "value": {
+ "/Count": 1,
+ "/Kids": [
+ "3 0 R"
+ ],
+ "/Type": "/Pages"
+ }
+ },
+ "obj:3 0 R": {
+ "value": {
+ "/Contents": "4 0 R",
+ "/MediaBox": [
+ 0,
+ 0,
+ 612,
+ 792
+ ],
+ "/Nulls": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ "6 0 R",
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ 10,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ],
+ "/Parent": "2 0 R",
+ "/Resources": {
+ "/Font": {
+ "/F1": "7 0 R"
+ },
+ "/ProcSet": "8 0 R"
+ },
+ "/Type": "/Page"
+ }
+ },
+ "obj:4 0 R": {
+ "stream": {
+ "dict": {
+ "/Length": "5 0 R"
+ }
+ }
+ },
+ "obj:5 0 R": {
+ "value": 44
+ },
+ "obj:6 0 R": {
+ "value": null
+ },
+ "obj:7 0 R": {
+ "value": {
+ "/BaseFont": "/Helvetica",
+ "/Encoding": "/WinAnsiEncoding",
+ "/Name": "/F1",
+ "/Subtype": "/Type1",
+ "/Type": "/Font"
+ }
+ },
+ "obj:8 0 R": {
+ "value": [
+ "/PDF",
+ "/Text"
+ ]
+ },
+ "trailer": {
+ "value": {
+ "/ID": [
+ "b:cfee6745ad454ddb88cadfa224b20523",
+ "b:31415926535897932384626433832795"
+ ],
+ "/Root": "1 0 R",
+ "/Size": 9
+ }
+ }
+ }
+ ]
+}
diff --git a/qpdf/qtest/qpdf/minimal-nulls.pdf b/qpdf/qtest/qpdf/minimal-nulls.pdf
new file mode 100644
index 00000000..491d0b30
--- /dev/null
+++ b/qpdf/qtest/qpdf/minimal-nulls.pdf
@@ -0,0 +1,387 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Nulls [
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 6 0 R
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ 10
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ null
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 7 0 R
+ >>
+ /ProcSet 8 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato) Tj
+ET
+endstream
+endobj
+
+5 0 obj
+44
+endobj
+
+6 0 obj
+null
+endobj
+
+7 0 obj
+<<
+ /BaseFont /Helvetica
+ /Encoding /WinAnsiEncoding
+ /Name /F1
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+8 0 obj
+[
+ /PDF
+ /Text
+]
+endobj
+
+xref
+0 9
+0000000000 65535 f
+0000000025 00000 n
+0000000079 00000 n
+0000000161 00000 n
+0000002909 00000 n
+0000003008 00000 n
+0000003027 00000 n
+0000003048 00000 n
+0000003166 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 9
+ /ID [<cfee6745ad454ddb88cadfa224b20523><31415926535897932384626433832795>]
+>>
+startxref
+3201
+%%EOF