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