mirror of
https://github.com/0x5eal/rbxts-pako.git
synced 2025-04-04 10:50:59 +01:00
92 lines
2.6 KiB
JavaScript
92 lines
2.6 KiB
JavaScript
// Deflate coverage tests
|
|
'use strict';
|
|
|
|
|
|
const assert = require('assert');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const c = require('../lib/zlib/constants');
|
|
const msg = require('../lib/zlib/messages');
|
|
const zlib_deflate = require('../lib/zlib/deflate');
|
|
const ZStream = require('../lib/zlib/zstream');
|
|
|
|
const pako = require('../index');
|
|
|
|
|
|
const short_sample = 'hello world';
|
|
const long_sample = fs.readFileSync(path.join(__dirname, 'fixtures/samples/lorem_en_100k.txt'));
|
|
|
|
function testDeflate(data, opts, flush) {
|
|
const deflator = new pako.Deflate(opts);
|
|
deflator.push(data, flush);
|
|
deflator.push(data, true);
|
|
|
|
assert.strictEqual(deflator.err, 0, msg[deflator.err]);
|
|
}
|
|
|
|
describe('Deflate support', () => {
|
|
it('stored', () => {
|
|
testDeflate(short_sample, { level: 0, chunkSize: 200 }, 0);
|
|
testDeflate(short_sample, { level: 0, chunkSize: 10 }, 5);
|
|
});
|
|
it('fast', () => {
|
|
testDeflate(short_sample, { level: 1, chunkSize: 10 }, 5);
|
|
testDeflate(long_sample, { level: 1, memLevel: 1, chunkSize: 10 }, 0);
|
|
});
|
|
it('slow', () => {
|
|
testDeflate(short_sample, { level: 4, chunkSize: 10 }, 5);
|
|
testDeflate(long_sample, { level: 9, memLevel: 1, chunkSize: 10 }, 0);
|
|
});
|
|
it('rle', () => {
|
|
testDeflate(short_sample, { strategy: 3 }, 0);
|
|
testDeflate(short_sample, { strategy: 3, chunkSize: 10 }, 5);
|
|
testDeflate(long_sample, { strategy: 3, chunkSize: 10 }, 0);
|
|
});
|
|
it('huffman', () => {
|
|
testDeflate(short_sample, { strategy: 2 }, 0);
|
|
testDeflate(short_sample, { strategy: 2, chunkSize: 10 }, 5);
|
|
testDeflate(long_sample, { strategy: 2, chunkSize: 10 }, 0);
|
|
|
|
});
|
|
});
|
|
|
|
describe('Deflate states', () => {
|
|
//in port checking input parameters was removed
|
|
it('inflate bad parameters', () => {
|
|
let ret, strm;
|
|
|
|
ret = zlib_deflate.deflate(null, 0);
|
|
assert(ret === c.Z_STREAM_ERROR);
|
|
|
|
strm = new ZStream();
|
|
|
|
ret = zlib_deflate.deflateInit(null);
|
|
assert(ret === c.Z_STREAM_ERROR);
|
|
|
|
ret = zlib_deflate.deflateInit(strm, 6);
|
|
assert(ret === c.Z_OK);
|
|
|
|
ret = zlib_deflate.deflateSetHeader(null);
|
|
assert(ret === c.Z_STREAM_ERROR);
|
|
|
|
strm.state.wrap = 1;
|
|
ret = zlib_deflate.deflateSetHeader(strm, null);
|
|
assert(ret === c.Z_STREAM_ERROR);
|
|
|
|
strm.state.wrap = 2;
|
|
ret = zlib_deflate.deflateSetHeader(strm, null);
|
|
assert(ret === c.Z_OK);
|
|
|
|
ret = zlib_deflate.deflate(strm, c.Z_FINISH);
|
|
assert(ret === c.Z_BUF_ERROR);
|
|
|
|
ret = zlib_deflate.deflateEnd(null);
|
|
assert(ret === c.Z_STREAM_ERROR);
|
|
|
|
//BS_NEED_MORE
|
|
strm.state.status = 5;
|
|
ret = zlib_deflate.deflateEnd(strm);
|
|
assert(ret === c.Z_STREAM_ERROR);
|
|
});
|
|
});
|