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 expected = Buffer.concat([blkhdr, chunk2]); 16let actual; 17 18deflater.write(chunk1, function() { 19 deflater.params(0, zlib.constants.Z_DEFAULT_STRATEGY, function() { 20 while (deflater.read()); 21 deflater.end(chunk2, function() { 22 const bufs = []; 23 let buf; 24 while (buf = deflater.read()) 25 bufs.push(buf); 26 actual = Buffer.concat(bufs); 27 }); 28 }); 29 while (deflater.read()); 30}); 31 32process.once('exit', function() { 33 assert.deepStrictEqual(actual, expected); 34}); 35