/* eslint no-console: “off” */

var asynckit = require('./')

, async    = require('async')
, assert   = require('assert')
, expected = 0
;

var Benchmark = require('benchmark'); var suite = new Benchmark.Suite;

var source = []; for (var z = 1; z < 100; z++) {

source.push(z);
expected += z;

}

suite // add tests

.add('async.map', function(deferred) {

var total = 0;

async.map(source,
function(i, cb)
{
  setImmediate(function()
  {
    total += i;
    cb(null, total);
  });
},
function(err, result)
{
  assert.ifError(err);
  assert.equal(result[result.length - 1], expected);
  deferred.resolve();
});

}, {'defer': true})

.add('asynckit.parallel', function(deferred) {

var total = 0;

asynckit.parallel(source,
function(i, cb)
{
  setImmediate(function()
  {
    total += i;
    cb(null, total);
  });
},
function(err, result)
{
  assert.ifError(err);
  assert.equal(result[result.length - 1], expected);
  deferred.resolve();
});

}, {'defer': true})

// add listeners .on('cycle', function(ev) {

console.log(String(ev.target));

}) .on('complete', function() {

console.log('Fastest is ' + this.filter('fastest').map('name'));

}) // run async .run({ 'async': true });