// 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); }); });