mirror of
https://github.com/foliojs/pdfkit.git
synced 2025-12-08 20:15:54 +00:00
97 lines
2.2 KiB
JavaScript
97 lines
2.2 KiB
JavaScript
const PDFReference = require("../../lib/reference").default;
|
|
const PDFDocument = require("../../lib/document").default;
|
|
const zlib = require('zlib')
|
|
|
|
describe('PDFReference', () => {
|
|
let document
|
|
beforeEach(() => {
|
|
document = new PDFDocument()
|
|
})
|
|
|
|
test('instantiated without data', () => {
|
|
const ref = new PDFReference(document, 1);
|
|
|
|
expect(ref.id).toBeDefined()
|
|
expect(ref.data).toBeDefined()
|
|
expect(ref.data).toBeInstanceOf(Object)
|
|
})
|
|
|
|
test('instantiated with data', () => {
|
|
const refData = {Pages: 0}
|
|
const ref = new PDFReference(document, 1, refData);
|
|
|
|
expect(ref.id).toBe(1)
|
|
expect(ref.data).toBe(refData)
|
|
})
|
|
|
|
test('written data of empty reference', (done) => {
|
|
const dataLog = []
|
|
const expected = [
|
|
'1 0 obj',
|
|
'<<\n>>',
|
|
'endobj'
|
|
]
|
|
const ref = new PDFReference(document, 1);
|
|
document._write = function(data) {
|
|
dataLog.push(data)
|
|
}
|
|
ref.finalize()
|
|
setTimeout(() => {
|
|
expect(dataLog).toEqual(expected)
|
|
done()
|
|
}, 1)
|
|
})
|
|
|
|
test('written data of reference with uncompressed data', (done) => {
|
|
const dataLog = []
|
|
const chunk = new Buffer('test')
|
|
const expected = [
|
|
'1 0 obj',
|
|
`<<
|
|
/Length ${chunk.length}
|
|
>>`,
|
|
'stream',
|
|
chunk,
|
|
'\nendstream',
|
|
'endobj'
|
|
]
|
|
const ref = new PDFReference(document, 1);
|
|
ref.compress = false
|
|
ref.write(chunk)
|
|
document._write = function(data) {
|
|
dataLog.push(data)
|
|
}
|
|
ref.finalize()
|
|
setTimeout(() => {
|
|
expect(dataLog).toEqual(expected)
|
|
done()
|
|
}, 1)
|
|
})
|
|
|
|
test('written data of reference with compressed data', (done) => {
|
|
const dataLog = []
|
|
const chunk = new Buffer('test')
|
|
const compressed = zlib.deflateSync(chunk);
|
|
const expected = [
|
|
'1 0 obj',
|
|
`<<
|
|
/Length ${compressed.length}
|
|
/Filter /FlateDecode
|
|
>>`,
|
|
'stream',
|
|
compressed,
|
|
'\nendstream',
|
|
'endobj'
|
|
]
|
|
const ref = new PDFReference(document, 1);
|
|
ref.write(chunk)
|
|
document._write = function(data) {
|
|
dataLog.push(data)
|
|
}
|
|
ref.finalize()
|
|
setTimeout(() => {
|
|
expect(dataLog).toEqual(expected)
|
|
done()
|
|
}, 1)
|
|
})
|
|
}) |