1'use strict'; 2require('../common'); 3const assert = require('assert'); 4const zlib = require('zlib'); 5const fixtures = require('../common/fixtures'); 6 7const file = fixtures.readSync('person.jpg'); 8const chunkSize = 12 * 1024; 9const opts = { level: 9, strategy: zlib.constants.Z_DEFAULT_STRATEGY }; 10const deflater = zlib.createDeflate(opts); 11 12const chunk1 = file.slice(0, chunkSize); 13const chunk2 = file.slice(chunkSize); 14const blkhdr = Buffer.from([0x00, 0x5a, 0x82, 0xa5, 0x7d]); 15const blkftr = Buffer.from('010000ffff7dac3072', 'hex'); 16const expected = Buffer.concat([blkhdr, chunk2, blkftr]); 17const bufs = []; 18 19function read() { 20 let buf; 21 while ((buf = deflater.read()) !== null) { 22 bufs.push(buf); 23 } 24} 25 26deflater.write(chunk1, function() { 27 deflater.params(0, zlib.constants.Z_DEFAULT_STRATEGY, function() { 28 while (deflater.read()); 29 30 deflater.on('readable', read); 31 32 deflater.end(chunk2); 33 }); 34 while (deflater.read()); 35}); 36 37process.once('exit', function() { 38 const actual = Buffer.concat(bufs); 39 assert.deepStrictEqual(actual, expected); 40}); 41