mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
b7da5b79c3
Co-authored-by: Hackzzila <admin@hackzzila.com> PR-URL: https://github.com/nodejs/node/pull/24938 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Jan Krems <jan.krems@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
74 lines
1.9 KiB
JavaScript
74 lines
1.9 KiB
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
const fixtures = require('../common/fixtures');
|
|
const assert = require('assert');
|
|
const zlib = require('zlib');
|
|
|
|
// Test some brotli-specific properties of the brotli streams that can not
|
|
// be easily covered through expanding zlib-only tests.
|
|
|
|
const sampleBuffer = fixtures.readSync('/pss-vectors.json');
|
|
|
|
{
|
|
// Test setting the quality parameter at stream creation:
|
|
const sizes = [];
|
|
for (let quality = zlib.constants.BROTLI_MIN_QUALITY;
|
|
quality <= zlib.constants.BROTLI_MAX_QUALITY;
|
|
quality++) {
|
|
const encoded = zlib.brotliCompressSync(sampleBuffer, {
|
|
params: {
|
|
[zlib.constants.BROTLI_PARAM_QUALITY]: quality
|
|
}
|
|
});
|
|
sizes.push(encoded.length);
|
|
}
|
|
|
|
// Increasing quality should roughly correspond to decreasing compressed size:
|
|
for (let i = 0; i < sizes.length - 1; i++) {
|
|
assert(sizes[i + 1] <= sizes[i] * 1.05, sizes); // 5 % margin of error.
|
|
}
|
|
assert(sizes[0] > sizes[sizes.length - 1], sizes);
|
|
}
|
|
|
|
{
|
|
// Test that setting out-of-bounds option values or keys fails.
|
|
common.expectsError(() => {
|
|
zlib.createBrotliCompress({
|
|
params: {
|
|
10000: 0
|
|
}
|
|
});
|
|
}, {
|
|
code: 'ERR_BROTLI_INVALID_PARAM',
|
|
type: RangeError,
|
|
message: '10000 is not a valid Brotli parameter'
|
|
});
|
|
|
|
// Test that accidentally using duplicate keys fails.
|
|
common.expectsError(() => {
|
|
zlib.createBrotliCompress({
|
|
params: {
|
|
'0': 0,
|
|
'00': 0
|
|
}
|
|
});
|
|
}, {
|
|
code: 'ERR_BROTLI_INVALID_PARAM',
|
|
type: RangeError,
|
|
message: '00 is not a valid Brotli parameter'
|
|
});
|
|
|
|
common.expectsError(() => {
|
|
zlib.createBrotliCompress({
|
|
params: {
|
|
// This is a boolean flag
|
|
[zlib.constants.BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING]: 42
|
|
}
|
|
});
|
|
}, {
|
|
code: 'ERR_ZLIB_INITIALIZATION_FAILED',
|
|
type: Error,
|
|
message: 'Initialization failed'
|
|
});
|
|
}
|