• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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