'use strict'; const common = require('../common'); const zlib = require('zlib'); const assert = require('assert'); const input = '0123456789'.repeat(4); for (const [ compress, decompressor ] of [ [ zlib.deflateRawSync, zlib.createInflateRaw ], [ zlib.deflateSync, zlib.createInflate ], [ zlib.brotliCompressSync, zlib.createBrotliDecompress ] ]) { const compressed = compress(input); const trailingData = Buffer.from('not valid compressed data'); for (const variant of [ (stream) => { stream.end(compressed); }, (stream) => { stream.write(compressed); stream.write(trailingData); }, (stream) => { stream.write(compressed); stream.end(trailingData); }, (stream) => { stream.write(Buffer.concat([compressed, trailingData])); }, (stream) => { stream.end(Buffer.concat([compressed, trailingData])); } ]) { let output = ''; const stream = decompressor(); stream.setEncoding('utf8'); stream.on('data', (chunk) => output += chunk); stream.on('end', common.mustCall(() => { assert.strictEqual(output, input); assert.strictEqual(stream.bytesWritten, compressed.length); })); variant(stream); } }