|
1 | 1 | 'use strict';
|
| 2 | + |
2 | 3 | require('../common');
|
3 |
| -const assert = require('assert'); |
4 |
| -const zlib = require('zlib'); |
5 |
| -const fixtures = require('../common/fixtures'); |
6 | 4 |
|
7 |
| -const file = fixtures.readSync('person.jpg'); |
8 |
| -const chunkSize = 16; |
9 |
| -const opts = { level: 0 }; |
10 |
| -const deflater = zlib.createDeflate(opts); |
| 5 | +const assert = require('node:assert'); |
| 6 | +const zlib = require('node:zlib'); |
| 7 | +const { test } = require('node:test'); |
| 8 | + |
| 9 | +test('zlib flush', async () => { |
| 10 | + const { promise, resolve } = Promise.withResolvers(); |
11 | 11 |
|
12 |
| -const chunk = file.slice(0, chunkSize); |
13 |
| -const expectedNone = Buffer.from([0x78, 0x01]); |
14 |
| -const blkhdr = Buffer.from([0x00, 0x10, 0x00, 0xef, 0xff]); |
15 |
| -const adler32 = Buffer.from([0x00, 0x00, 0x00, 0xff, 0xff]); |
16 |
| -const expectedFull = Buffer.concat([blkhdr, chunk, adler32]); |
17 |
| -let actualNone; |
18 |
| -let actualFull; |
| 12 | + const opts = { level: 0 }; |
| 13 | + const deflater = zlib.createDeflate(opts); |
| 14 | + const chunk = Buffer.from('/9j/4AAQSkZJRgABAQEASA==', 'base64'); |
| 15 | + const expectedNone = Buffer.from([0x78, 0x01]); |
| 16 | + const blkhdr = Buffer.from([0x00, 0x10, 0x00, 0xef, 0xff]); |
| 17 | + const adler32 = Buffer.from([0x00, 0x00, 0x00, 0xff, 0xff]); |
| 18 | + const expectedFull = Buffer.concat([blkhdr, chunk, adler32]); |
| 19 | + let actualNone; |
| 20 | + let actualFull; |
19 | 21 |
|
20 |
| -deflater.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); |
| 22 | + deflater.write(chunk, function() { |
| 23 | + deflater.flush(zlib.constants.Z_NO_FLUSH, function() { |
| 24 | + actualNone = deflater.read(); |
| 25 | + deflater.flush(function() { |
| 26 | + const bufs = []; |
| 27 | + let buf; |
| 28 | + while ((buf = deflater.read()) !== null) |
| 29 | + bufs.push(buf); |
| 30 | + actualFull = Buffer.concat(bufs); |
| 31 | + resolve(); |
| 32 | + }); |
29 | 33 | });
|
30 | 34 | });
|
31 |
| -}); |
32 |
| - |
33 |
| -process.once('exit', function() { |
| 35 | + await promise; |
34 | 36 | assert.deepStrictEqual(actualNone, expectedNone);
|
35 | 37 | assert.deepStrictEqual(actualFull, expectedFull);
|
36 | 38 | });
|
0 commit comments