| 
									
										
										
										
											2014-04-16 22:22:28 +00:00
										 |  |  | // Deflate coverage tests
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*global describe, it*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var assert = require('assert'); | 
					
						
							|  |  |  | var fs = require('fs'); | 
					
						
							|  |  |  | var path  = require('path'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var c = require('../lib/zlib/constants'); | 
					
						
							|  |  |  | var msg = require('../lib/zlib/messages'); | 
					
						
							|  |  |  | var zlib_deflate = require('../lib/zlib/deflate.js'); | 
					
						
							|  |  |  | var zstream = require('../lib/zlib/zstream'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var pako  = require('../index'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var short_sample = 'hello world'; | 
					
						
							|  |  |  | var long_sample = fs.readFileSync(path.join(__dirname, 'fixtures/samples/lorem_en_100k.txt')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function testDeflate(data, opts, flush) { | 
					
						
							|  |  |  |   var deflator = new pako.Deflate(opts); | 
					
						
							|  |  |  |   deflator.push(data, flush); | 
					
						
							|  |  |  |   deflator.push(data, true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   assert.equal(deflator.err, false, msg[deflator.err]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('Deflate support', function() { | 
					
						
							|  |  |  |   it('stored', function() { | 
					
						
							|  |  |  |     testDeflate(short_sample, {level: 0, chunkSize: 200}, 0); | 
					
						
							|  |  |  |     testDeflate(short_sample, {level: 0, chunkSize: 10}, 5); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  |   it('fast', function() { | 
					
						
							|  |  |  |     testDeflate(short_sample, {level: 1, chunkSize: 10}, 5); | 
					
						
							|  |  |  |     testDeflate(long_sample, {level: 1, memLevel: 1, chunkSize: 10}, 0); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  |   it('slow', function() { | 
					
						
							|  |  |  |     testDeflate(short_sample, {level: 4, chunkSize: 10}, 5); | 
					
						
							|  |  |  |     testDeflate(long_sample, {level: 9, memLevel: 1, chunkSize: 10}, 0); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  |   it('rle', function() { | 
					
						
							|  |  |  |     testDeflate(short_sample, {strategy: 3}, 0); | 
					
						
							|  |  |  |     testDeflate(short_sample, {strategy: 3, chunkSize: 10}, 5); | 
					
						
							|  |  |  |     testDeflate(long_sample, {strategy: 3, chunkSize: 10}, 0); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  |   it('huffman', function() { | 
					
						
							|  |  |  |     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', function() { | 
					
						
							|  |  |  |   //in port checking input parameters was removed
 | 
					
						
							|  |  |  |   it('inflate bad parameters', function () { | 
					
						
							|  |  |  |     var 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); | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2015-03-24 02:28:20 +00:00
										 |  |  | }); |