UNPKG

dual-emitter

Version:

:tropical_drink: EventEmitter done right and no dependencies. For nodejs and the browser (>= IE8). Can emit custom or DOM events.

107 lines (90 loc) 2.41 kB
/*! * dual-emitter <https://github.com/tunnckoCore/dual-emitter> * * Copyright (c) 2015 Charlike Mike Reagent <@tunnckoCore> (http://www.tunnckocore.tk) * Released under the MIT license. */ /* jshint asi:true */ 'use strict' var test = require('assertit') var DualEmitter = require('./index') test('dual-emitter:', function () { test('constructor should accept only object', function (done) { var emitter = new DualEmitter(12345) test.deepEqual(emitter._events, {}) done() }) test('should listen `.on` custom event `.emit` few times', function (done) { var emitter = new DualEmitter() var count = 0 var results = [] emitter .on('custom', function onCustom (a, b) { count++ results.push([a, b]) }) .emit('custom', 'foo', 123) .emit('custom', 'bar') .emit('custom') test.equal(count, 3) test.deepEqual(results[0], ['foo', 123]) test.deepEqual(results[1], ['bar', undefined]) test.deepEqual(results[2], [undefined, undefined]) done() }) test('should listen `.once` custom event `.emit` few times', function (done) { var emitter = new DualEmitter() var count = 0 emitter .once('custom', function () { count++ }) .emit('custom') .emit('custom') .emit('custom') test.equal(count, 1) done() }) test('should `.off` event listener after second `.emit`', function (done) { var emitter = new DualEmitter() var count = 0 function handler () { if (count === 2) { emitter.off('custom', handler) return } count++ } emitter .on('custom', handler) .emit('custom') .emit('custom') .emit('custom') .emit('custom') test.equal(count, 2) done() }) test('should `this` at `.on/.once` be DualEmitter when not DOM usage', function (done) { var emitter = new DualEmitter() emitter .on('custom', function () { test.equal(typeof this.once, 'function') done() }) .emit('custom') }) test('should support multiple `.on` event', function (done) { var emitter = new DualEmitter() var count = 0 function handler () { count++ } emitter .on('custom', handler) .on('custom', handler) .on('custom', handler) .emit('custom') test.equal(count, 3) done() }) })