|
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