• 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 = 16;
9const opts = { level: 0 };
10const deflater = zlib.createDeflate(opts);
11
12const chunk = file.slice(0, chunkSize);
13const expectedNone = Buffer.from([0x78, 0x01]);
14const blkhdr = Buffer.from([0x00, 0x10, 0x00, 0xef, 0xff]);
15const adler32 = Buffer.from([0x00, 0x00, 0x00, 0xff, 0xff]);
16const expectedFull = Buffer.concat([blkhdr, chunk, adler32]);
17let actualNone;
18let actualFull;
19
20deflater.write(chunk, function() {
21  deflater.flush(zlib.constants.Z_NO_FLUSH, function() {
22    actualNone = deflater.read();
23    deflater.flush(function() {
24      const bufs = [];
25      let buf;
26      while ((buf = deflater.read()) !== null)
27        bufs.push(buf);
28      actualFull = Buffer.concat(bufs);
29    });
30  });
31});
32
33process.once('exit', function() {
34  assert.deepStrictEqual(actualNone, expectedNone);
35  assert.deepStrictEqual(actualFull, expectedFull);
36});
37