Skip to content

Commit 24c4db6

Browse files
committed
Add tests about needing more output
1 parent 90a0fa9 commit 24c4db6

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

test/brotli.spec.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,4 +189,30 @@ describe("Brotli-wasm", () => {
189189

190190
expect(decOutput.toString('utf8')).to.equal(s);
191191
});
192+
193+
it("streaming compressing can handle needing more output", () => {
194+
// Suppressed currently since it requires a large file as input
195+
return;
196+
// const input = fs.readFileSync('test/encLongInput.bin');
197+
const input = Buffer.from("test");
198+
const stream = new brotli.CompressStream();
199+
const output1 = stream.compress(input, 1);
200+
expect(stream.result()).to.equal(brotli.BrotliStreamResult.NeedsMoreOutput);
201+
const output2 = stream.compress(input.slice(stream.last_input_offset()), 1640000);
202+
expect(stream.result()).to.equal(brotli.BrotliStreamResult.NeedsMoreInput);
203+
const output3 = stream.compress(undefined, 1640000);
204+
expect(stream.result()).to.equal(brotli.BrotliStreamResult.ResultSuccess);
205+
const output = Buffer.concat([output1, output2, output3]);
206+
expect(Buffer.from(brotli.decompress(output)).toString('base64')).to.equal(input.toString('base64'));
207+
});
208+
209+
it("streaming decompressing can handle needing more output", () => {
210+
const input = Buffer.from('GxoAABypU587dC0k9ianQOgqjS32iUTcCA==', 'base64');
211+
const stream = new brotli.DecompressStream();
212+
const output1 = stream.decompress(input, 1);
213+
expect(stream.result()).to.equal(brotli.BrotliStreamResult.NeedsMoreOutput);
214+
const output2 = stream.decompress(input.slice(stream.last_input_offset()), 100);
215+
expect(stream.result()).to.equal(brotli.BrotliStreamResult.ResultSuccess);
216+
expect(Buffer.concat([output1, output2]).toString('utf8')).to.equal('Brotli brotli brotli brotli');
217+
});
192218
});

0 commit comments

Comments
 (0)