diff --git a/test/deflate.js b/test/deflate.js index 176bb4d..73817b1 100644 --- a/test/deflate.js +++ b/test/deflate.js @@ -14,7 +14,7 @@ var testDeflate = helpers.testDeflate; var samples = helpers.loadSamples(); -describe('Defaults', function () { +describe('Deflate defaults', function () { it('deflate, no options', function(done) { testDeflate(zlib.createDeflate, pako.deflate, samples, {}, done); @@ -153,31 +153,10 @@ describe('Deflate strategy', function () { describe('Deflate RAW', function () { - // Since difference is only in rwapper, levels test is enougth - it('level 9', function(done) { - testDeflate(zlib.createDeflateRaw, pako.deflateRaw, samples, { level: 9 }, done); - }); - it('level 8', function(done) { - testDeflate(zlib.createDeflateRaw, pako.deflateRaw, samples, { level: 8 }, done); - }); - it('level 7', function(done) { - testDeflate(zlib.createDeflateRaw, pako.deflateRaw, samples, { level: 7 }, done); - }); - it('level 6', function(done) { - testDeflate(zlib.createDeflateRaw, pako.deflateRaw, samples, { level: 6 }, done); - }); - it('level 5', function(done) { - testDeflate(zlib.createDeflateRaw, pako.deflateRaw, samples, { level: 5 }, done); - }); + // Since difference is only in rwapper, test for store/fast/slow methods are enougth it('level 4', function(done) { testDeflate(zlib.createDeflateRaw, pako.deflateRaw, samples, { level: 4 }, done); }); - it('level 3', function(done) { - testDeflate(zlib.createDeflateRaw, pako.deflateRaw, samples, { level: 3 }, done); - }); - it('level 2', function(done) { - testDeflate(zlib.createDeflateRaw, pako.deflateRaw, samples, { level: 2 }, done); - }); it('level 1', function(done) { testDeflate(zlib.createDeflateRaw, pako.deflateRaw, samples, { level: 1 }, done); }); diff --git a/test/helpers.js b/test/helpers.js index c35fef2..87bf4e0 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -7,6 +7,7 @@ var _ = require('lodash'); var async = require('async'); var pako_utils = require('../lib/zlib/utils'); +var pako = require('../index'); // Load fixtures to test // return: { 'filename1': content1, 'filename2': content2, ...} @@ -123,7 +124,34 @@ function testDeflate(zlib_factory, pako_deflate, samples, options, callback) { async.series(queue, callback); } + +function testInflate(samples, options, callback) { + var name, data, deflated; + + for (name in samples) { + data = samples[name]; + deflated = pako.deflate(data, options); + + // with untyped arrays + pako_utils.forceUntyped = true; + if (cmpBuf(pako.inflate(deflated, options).result, data)) { + callback('Error in "' + name + '" - zlib result != pako result'); + return; + } + + // with typed arrays + pako_utils.forceUntyped = true; + if (cmpBuf(pako.inflate(deflated, options).result, data)) { + callback('Error in "' + name + '" - zlib result != pako result'); + return; + } + } + + callback(); +} + + exports.cmpBuf = cmpBuf; exports.testDeflate = testDeflate; -exports.testDeflateSingle = testDeflateSingle; +exports.testInflate = testInflate; exports.loadSamples = loadSamples; \ No newline at end of file diff --git a/test/inflate.js b/test/inflate.js new file mode 100644 index 0000000..d13f4d8 --- /dev/null +++ b/test/inflate.js @@ -0,0 +1,142 @@ +/*global describe, it*/ + + +'use strict'; + + +var helpers = require('./helpers'); +var testInflate = helpers.testInflate; +var pako = require('../index'); + + +var samples = helpers.loadSamples(); + + +describe.skip('Inflate defaults', function () { + + it('inflate, no options', function(done) { + testInflate(samples, {}, done); + }); + + it('inflate raw, no options', function(done) { + testInflate(samples, { raw: true }, done); + }); + +}); + + +describe.skip('Inflate ungzip', function () { + var orig = samples.lorem_cat; + var gzipped = pako.gzip(samples.lorem_cat); + + it('ungzip with autodetect', function(done) { + done(helpers.cmp(orig, pako.inflate(gzipped).result)); + }); + + it('ungzip with method set directly', function(done) { + done(helpers.cmp(orig, pako.inflate(gzipped, { windowBits: 15 + 16 }).result)); + }); + +}); + + +describe.skip('Inflate levels', function () { + + it('level 9', function(done) { + testInflate(samples, { level: 9 }, done); + }); + it('level 8', function(done) { + testInflate(samples, { level: 8 }, done); + }); + it('level 7', function(done) { + testInflate(samples, { level: 7 }, done); + }); + it('level 6', function(done) { + testInflate(samples, { level: 6 }, done); + }); + it('level 5', function(done) { + testInflate(samples, { level: 5 }, done); + }); + it('level 4', function(done) { + testInflate(samples, { level: 4 }, done); + }); + it('level 3', function(done) { + testInflate(samples, { level: 3 }, done); + }); + it('level 2', function(done) { + testInflate(samples, { level: 2 }, done); + }); + it('level 1', function(done) { + testInflate(samples, { level: 1 }, done); + }); + it('level 0', function(done) { + testInflate(samples, { level: 0 }, done); + }); + +}); + + +describe.skip('Inflate windowBits', function () { + + it('windowBits 15', function(done) { + testInflate(samples, { windowBits: 15 }, done); + }); + it('windowBits 14', function(done) { + testInflate(samples, { windowBits: 14 }, done); + }); + it('windowBits 13', function(done) { + testInflate(samples, { windowBits: 13 }, done); + }); + it('windowBits 12', function(done) { + testInflate(samples, { windowBits: 12 }, done); + }); + it('windowBits 11', function(done) { + testInflate(samples, { windowBits: 11 }, done); + }); + it('windowBits 10', function(done) { + testInflate(samples, { windowBits: 10 }, done); + }); + it('windowBits 9', function(done) { + testInflate(samples, { windowBits: 9 }, done); + }); + it('windowBits 8', function(done) { + testInflate(samples, { windowBits: 8 }, done); + }); + +}); + +describe.skip('Inflate strategy', function () { + + it('Z_DEFAULT_STRATEGY', function(done) { + testInflate(samples, { strategy: 0 }, done); + }); + it('Z_FILTERED', function(done) { + testInflate(samples, { strategy: 1 }, done); + }); + it('Z_HUFFMAN_ONLY', function(done) { + testInflate(samples, { strategy: 2 }, done); + }); + it('Z_RLE', function(done) { + testInflate(samples, { strategy: 3 }, done); + }); + it.skip('Z_FIXED', function(done) { + testInflate(samples, { strategy: 4 }, done); + }); + +}); + + +describe.skip('Inflate RAW', function () { + // Since difference is only in rwapper, test for store/fast/slow methods are enougth + it('level 4', function(done) { + testInflate(samples, { level: 4, raw: true }, done); + }); + it('level 1', function(done) { + testInflate(samples, { level: 1, raw: true }, done); + }); + it('level 0', function(done) { + testInflate(samples, { level: 0, raw: true }, done); + }); + +}); +