'use strict';
const common = require('../common.js');
const zlib = require('zlib');

const bench = common.createBenchmark(main, {
  inputLen: [16 * 1024 * 1024],
  chunkLen: [1024],
  n: [1e2]
});

function main({ n, inputLen, chunkLen }) {
  const input = zlib.deflateSync(Buffer.alloc(inputLen, 'a'));

  let i = 0;
  bench.start();
  (function next() {
    let p = 0;
    const inflater = zlib.createInflate();
    inflater.resume();
    inflater.on('finish', () => {
      if (i++ === n)
        return bench.end(n);
      next();
    });

    (function nextChunk() {
      if (p >= input.length)
        return inflater.end();
      inflater.write(input.slice(p, p += chunkLen), nextChunk);
    })();
  })();
}
