From b3c2790cd594263d59cab0dbc378f30ef0b4429e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Sun, 16 Dec 2018 22:12:21 -0300 Subject: [PATCH] Add initial reference spec --- package.json | 3 +- tests/unit/reference.spec.js | 96 ++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 tests/unit/reference.spec.js diff --git a/package.json b/package.json index 9449523..7eecc6b 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,8 @@ "pdf-guide": "node docs/generate.js", "website": "node docs/generate_website.js", "docs": "npm run pdf-guide && npm run website && npm run browser-demo", - "test": "jest -i" + "test": "jest -i", + "test:unit": "jest unit/ -i" }, "main": "js/pdfkit.js", "module": "js/pdfkit.es5.js", diff --git a/tests/unit/reference.spec.js b/tests/unit/reference.spec.js new file mode 100644 index 0000000..e72878d --- /dev/null +++ b/tests/unit/reference.spec.js @@ -0,0 +1,96 @@ +const PDFDocument = require('../../') +const zlib = require('zlib') + +describe('PDFReference', () => { + let document + beforeEach(() => { + document = new PDFDocument() + }) + + test('instantiated without data', () => { + const ref = document.ref() + + expect(ref.id).toBeDefined() + expect(ref.data).toBeDefined() + expect(ref.data).toBeInstanceOf(Object) + }) + + test('instantiated with data', () => { + const refData = {Pages: 0} + const ref = document.ref(refData) + + expect(ref.id).toBeDefined() + expect(ref.data).toBe(refData) + }) + + test('written data of empty reference', (done) => { + const dataLog = [] + const expected = [ + '7 0 obj', + '<<\n>>', + 'endobj' + ] + const ref = document.ref() + 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 = [ + '7 0 obj', + `<< +/Length ${chunk.length} +>>`, + 'stream', + chunk, + '\nendstream', + 'endobj' + ] + const ref = document.ref() + 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 = [ + '7 0 obj', + `<< +/Length ${compressed.length} +/Filter /FlateDecode +>>`, + 'stream', + compressed, + '\nendstream', + 'endobj' + ] + const ref = document.ref() + ref.write(chunk) + document._write = function(data) { + dataLog.push(data) + } + ref.finalize() + setTimeout(() => { + expect(dataLog).toEqual(expected) + done() + }, 1) + }) +}) \ No newline at end of file