Skip to content

Commit 6f0d5ff

Browse files
authored
Merge pull request #883 from blikblum/add-reference-unit-test
Add initial PDFReference specs
2 parents 83f5f72 + b3c2790 commit 6f0d5ff

2 files changed

Lines changed: 98 additions & 1 deletion

File tree

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@
5252
"pdf-guide": "node docs/generate.js",
5353
"website": "node docs/generate_website.js",
5454
"docs": "npm run pdf-guide && npm run website && npm run browser-demo",
55-
"test": "jest -i"
55+
"test": "jest -i",
56+
"test:unit": "jest unit/ -i"
5657
},
5758
"main": "js/pdfkit.js",
5859
"module": "js/pdfkit.es5.js",

tests/unit/reference.spec.js

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
const PDFDocument = require('../../')
2+
const zlib = require('zlib')
3+
4+
describe('PDFReference', () => {
5+
let document
6+
beforeEach(() => {
7+
document = new PDFDocument()
8+
})
9+
10+
test('instantiated without data', () => {
11+
const ref = document.ref()
12+
13+
expect(ref.id).toBeDefined()
14+
expect(ref.data).toBeDefined()
15+
expect(ref.data).toBeInstanceOf(Object)
16+
})
17+
18+
test('instantiated with data', () => {
19+
const refData = {Pages: 0}
20+
const ref = document.ref(refData)
21+
22+
expect(ref.id).toBeDefined()
23+
expect(ref.data).toBe(refData)
24+
})
25+
26+
test('written data of empty reference', (done) => {
27+
const dataLog = []
28+
const expected = [
29+
'7 0 obj',
30+
'<<\n>>',
31+
'endobj'
32+
]
33+
const ref = document.ref()
34+
document._write = function(data) {
35+
dataLog.push(data)
36+
}
37+
ref.finalize()
38+
setTimeout(() => {
39+
expect(dataLog).toEqual(expected)
40+
done()
41+
}, 1)
42+
})
43+
44+
test('written data of reference with uncompressed data', (done) => {
45+
const dataLog = []
46+
const chunk = new Buffer('test')
47+
const expected = [
48+
'7 0 obj',
49+
`<<
50+
/Length ${chunk.length}
51+
>>`,
52+
'stream',
53+
chunk,
54+
'\nendstream',
55+
'endobj'
56+
]
57+
const ref = document.ref()
58+
ref.compress = false
59+
ref.write(chunk)
60+
document._write = function(data) {
61+
dataLog.push(data)
62+
}
63+
ref.finalize()
64+
setTimeout(() => {
65+
expect(dataLog).toEqual(expected)
66+
done()
67+
}, 1)
68+
})
69+
70+
test('written data of reference with compressed data', (done) => {
71+
const dataLog = []
72+
const chunk = new Buffer('test')
73+
const compressed = zlib.deflateSync(chunk);
74+
const expected = [
75+
'7 0 obj',
76+
`<<
77+
/Length ${compressed.length}
78+
/Filter /FlateDecode
79+
>>`,
80+
'stream',
81+
compressed,
82+
'\nendstream',
83+
'endobj'
84+
]
85+
const ref = document.ref()
86+
ref.write(chunk)
87+
document._write = function(data) {
88+
dataLog.push(data)
89+
}
90+
ref.finalize()
91+
setTimeout(() => {
92+
expect(dataLog).toEqual(expected)
93+
done()
94+
}, 1)
95+
})
96+
})

0 commit comments

Comments
 (0)