| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 | var Emitter = require('../index');var emitter = require('../instance');var test = require('tape');test('subscribes to an event', function (t) {  var emitter = new Emitter();  emitter.on('test', function () {});  t.equal(emitter.e.test.length, 1, 'subscribed to event');  t.end();});test('subscribes to an event with context', function (t) {  var emitter = new Emitter();  var context = {    contextValue: true  };  emitter.on('test', function () {    t.ok(this.contextValue, 'is in context');    t.end();  }, context);  emitter.emit('test');});test('subscibes only once to an event', function (t) {  var emitter = new Emitter();  emitter.once('test', function () {    t.notOk(emitter.e.test, 'removed event from list');    t.end();  });  emitter.emit('test');});test('keeps context when subscribed only once', function (t) {  var emitter = new Emitter();  var context = {    contextValue: true  };  emitter.once('test', function () {    t.ok(this.contextValue, 'is in context');    t.notOk(emitter.e.test, 'not subscribed anymore');    t.end();  }, context);  emitter.emit('test');});test('emits an event', function (t) {  var emitter = new Emitter();  emitter.on('test', function () {    t.ok(true, 'triggered event');    t.end();  });  emitter.emit('test');});test('passes all arguments to event listener', function (t) {  var emitter = new Emitter();  emitter.on('test', function (arg1, arg2) {    t.equal(arg1, 'arg1', 'passed the first argument');    t.equal(arg2, 'arg2', 'passed the second argument');    t.end();  });  emitter.emit('test', 'arg1', 'arg2');});test('unsubscribes from all events with name', function (t) {  var emitter = new Emitter();  emitter.on('test', function () {    t.fail('should not get called');  });  emitter.off('test');  emitter.emit('test')  process.nextTick(function () {    t.end();  });});test('unsubscribes single event with name and callback', function (t) {  var emitter = new Emitter();  var fn = function () {    t.fail('should not get called');  }  emitter.on('test', fn);  emitter.off('test', fn);  emitter.emit('test')  process.nextTick(function () {    t.end();  });});// Test added by https://github.com/lazd// From PR: https://github.com/scottcorgan/tiny-emitter/pull/6test('unsubscribes single event with name and callback when subscribed twice', function (t) {  var emitter = new Emitter();  var fn = function () {    t.fail('should not get called');  };  emitter.on('test', fn);  emitter.on('test', fn);  emitter.off('test', fn);  emitter.emit('test');  process.nextTick(function () {    t.notOk(emitter.e['test'], 'removes all events');    t.end();  });});test('unsubscribes single event with name and callback when subscribed twice out of order', function (t) {  var emitter = new Emitter();  var calls = 0;  var fn = function () {    t.fail('should not get called');  };  var fn2 = function () {    calls++;  };  emitter.on('test', fn);  emitter.on('test', fn2);  emitter.on('test', fn);  emitter.off('test', fn);  emitter.emit('test');  process.nextTick(function () {    t.equal(calls, 1, 'callback was called');    t.end();  });});test('removes an event inside another event', function (t) {  var emitter = new Emitter();  emitter.on('test', function () {    t.equal(emitter.e.test.length, 1, 'event is still in list');    emitter.off('test');    t.notOk(emitter.e.test, 0, 'event is gone from list');    t.end();  });  emitter.emit('test');});test('event is emitted even if unsubscribed in the event callback', function (t) {  var emitter = new Emitter();  var calls = 0;  var fn = function () {    calls += 1;    emitter.off('test', fn);  };  emitter.on('test', fn);  emitter.on('test', function () {    calls += 1;  });  emitter.on('test', function () {    calls += 1;  });  process.nextTick(function () {    t.equal(calls, 3, 'all callbacks were called');    t.end();  });  emitter.emit('test');});test('calling off before any events added does nothing', function (t) {  var emitter = new Emitter();  emitter.off('test', function () {});  t.end();});test('emitting event that has not been subscribed to yet', function (t) {  var emitter = new Emitter();  emitter.emit('some-event', 'some message');  t.end();});test('unsubscribes single event with name and callback which was subscribed once', function (t) {  var emitter = new Emitter();  var fn = function () {    t.fail('event not unsubscribed');  }  emitter.once('test', fn);  emitter.off('test', fn);  emitter.emit('test');  t.end();});test('exports an instance', function (t) {  t.ok(emitter, 'exports an instance')  t.ok(emitter instanceof Emitter, 'an instance of the Emitter class');  t.end();});
 |