diff options
Diffstat (limited to 'node_modules/nanobus/test.js')
| -rw-r--r-- | node_modules/nanobus/test.js | 328 |
1 files changed, 328 insertions, 0 deletions
diff --git a/node_modules/nanobus/test.js b/node_modules/nanobus/test.js new file mode 100644 index 00000000..b411e842 --- /dev/null +++ b/node_modules/nanobus/test.js @@ -0,0 +1,328 @@ +var tape = require('tape') +var nanobus = require('./') + +tape('nanobus', function (t) { + t.test('should assert input types', function (t) { + t.plan(7) + var bus = nanobus() + t.throws(bus.emit.bind(bus), /string/) + t.throws(bus.on.bind(bus), /string/) + t.throws(bus.on.bind(bus, 'foo'), /function/) + t.throws(bus.once.bind(bus), /string/) + t.throws(bus.once.bind(bus, 'foo'), /function/) + t.throws(bus.removeListener.bind(bus), /string/) + t.throws(bus.removeListener.bind(bus, 'foo'), /function/) + }) + + t.test('should emit messages', function (t) { + t.plan(4) + var bus = nanobus() + var obj = { bin: 'baz' } + bus.on('foo:bar', function (data) { + t.equal(data, obj, 'data was same') + }) + + bus.emit('foo:bar', obj) + + bus.on('beep:boop', function (data) { + t.equal(data, undefined) + }) + + bus.emit('beep:boop') + + bus.on('baz:floop', function (arg1, arg2) { + t.equal(arg1, 'arg1', 'data was same') + t.equal(arg2, 'arg2', 'data was same') + }) + + bus.emit('baz:floop', 'arg1', 'arg2') + }) + + t.test('should prepend listeners', function (t) { + t.plan(4) + var i = 0 + var bus = nanobus() + bus.on('foo:bar', function (data) { + t.equal(i, 1) + }) + + bus.prependListener('foo:bar', function (data) { + t.equal(i, 0) + i++ + }) + + bus.emit('foo:bar') + + bus.on('*', function (data) { + t.equal(i, 1) + }) + + bus.prependListener('*', function (eventName, data) { + t.equal(i, data) + i++ + }) + + i = 0 + bus.emit('bar:baz', i) + }) + + t.test('should prepend once listeners', function (t) { + t.plan(3) + var i = 0 + var bus = nanobus() + bus.on('foo:bar', function (data) { + t.equal(i, 1) + }) + + bus.prependOnceListener('foo:bar', function (data) { + t.equal(i, 0) + i++ + }) + + bus.emit('foo:bar') + bus.emit('foo:bar') + }) + + t.test('should emit messages once', function (t) { + t.plan(1) + var bus = nanobus() + bus.once('foo:bar', function (data) { + t.pass('called') + }) + + bus.emit('foo:bar') + bus.emit('foo:bar') + }) + + t.test('should properly emit messages when using both once() and on() ', function (t) { + t.plan(2) + var bus = nanobus() + var i = 0 + + bus.once('foo:bar', function onceIncrement () { + i++ + }) + + bus.on('foo:bar', function onIncrement () { + i++ + }) + + bus.once('*', function wildcardOnceIncrement () { + i++ + }) + + bus.on('*', function wildcardOnIncrement () { + i++ + }) + + bus.emit('foo:bar') + t.equal(i, 4, 'incremented by once() and on()') + + bus.emit('foo:bar') + t.equal(i, 6, 'incremented by on() only') + }) + + t.test('should trigger wildcard once', function (t) { + t.plan(3) + var bus = nanobus() + bus.once('*', function (data) { + t.pass('called') + }) + + bus.on('foo:bar', function (data) { + t.pass('called foo:bar') + }) + + bus.on('foo:baz', function (data) { + t.pass('called foo:baz') + }) + + bus.emit('foo:bar') + bus.emit('foo:baz') + }) + + t.test('should be able to remove listeners', function (t) { + t.plan(3) + var bus = nanobus() + bus.on('foo:bar', goodHandler) + bus.on('foo:bar', badHandler) + bus.removeListener('foo:bar', badHandler) + bus.emit('foo:bar') + + bus.once('foo:bar', goodHandler) + bus.removeListener('foo:bar', onceHandler) + bus.emit('foo:bar') + + function goodHandler (data) { + t.pass('called') + } + + function onceHandler (data) { + t.pass('called') + } + + function badHandler (data) { + t.fail('oh no!') + } + }) + + t.test('should be able to remove all listeners', function (t) { + t.plan(1) + var bus = nanobus() + var i = 0 + + bus.on('foo:bar', handler) + bus.on('bin:baz', handler) + bus.removeAllListeners() + bus.emit('foo:bar') + bus.emit('bin:baz') + + t.equal(i, 0, 'no events called') + + function handler (data) { + i++ + } + }) + + t.test('should be able to remove all listeners for an event', function (t) { + t.plan(1) + var bus = nanobus() + var i = 0 + + bus.on('foo:bar', handler) + bus.on('bin:baz', handler) + bus.removeAllListeners('bin:baz') + bus.emit('foo:bar') + bus.emit('bin:baz') + + t.equal(i, 1, '1 event called') + + function handler (data) { + i++ + } + }) + + t.test('should be able to have * listeners', function (t) { + t.plan(12) + var bus = nanobus() + var i = 0 + + bus.on('foo:bar', handler) + bus.on('bin:baz', handler) + bus.on('*', handler) + + bus.emit('foo:bar') + t.equal(i, 2, 'count 2') + + bus.emit('bin:baz') + t.equal(i, 4, 'count 4') + + bus.removeAllListeners('bin:baz') + bus.emit('bin:baz') + t.equal(i, 5, 'count 5') + + bus.removeListener('*', handler) + bus.emit('foo:bar') + t.equal(i, 6, 'count 6') + + bus.on('*', handler) + bus.emit('foo:bar') + t.equal(i, 8, 'count 8') + + bus.removeAllListeners('*') + bus.emit('foo:bar') + t.equal(i, 9, 'count 9') + + bus.on('*', handler) + bus.emit('foo:bar') + t.equal(i, 11, 'count 11') + + bus.removeAllListeners() + t.equal(i, 11, 'count 11') + + bus.once('*', handler) + bus.emit('foo:bar') + t.equal(i, 12, 'count 12') + bus.emit('foo:bar') + t.equal(i, 12, 'count 12') + + bus.removeAllListeners() + t.equal(i, 12, 'count 12') + + bus.on('*', starHandler) + bus.emit('star:event', i) + bus.removeAllListeners() + + function handler (data) { + i++ + } + + function starHandler (eventName, data) { + t.equal(data, i, 'data was same') + } + }) + + t.test('should be able to remove listeners that have not been attached', function (t) { + var bus = nanobus() + + t.doesNotThrow(function () { + bus.removeListener('yay', handler) + }, 'removes unattched "yay" event') + t.doesNotThrow(function () { + bus.removeListener('*', handler) + }, 'removes unattached "*" event') + t.end() + + function handler () {} + }) + + t.test('should be able to get an array of listeners', function (t) { + t.plan(2) + var bus = nanobus() + + bus.on('foo', bar) + bus.on('foo', baz) + + t.deepEqual(bus.listeners('foo'), [bar, baz]) + + bus.on('*', bar) + bus.on('*', baz) + + t.deepEqual(bus.listeners('foo'), [bar, baz]) + + function bar (data) {} + function baz (data) {} + }) + + t.test('should be able to trigger multiple listeners with same args', function (t) { + t.plan(6) + var obj = {foo: 'bar'} + var bus = nanobus() + + bus.on('foo', function (data) { + t.deepEqual(data, obj) + }) + + bus.on('foo', function (data) { + t.deepEqual(data, obj) + }) + + bus.on('foo', function (data) { + t.deepEqual(data, obj) + }) + + bus.on('*', function (name, data) { + t.deepEqual(data, obj) + }) + + bus.on('*', function (name, data) { + t.deepEqual(data, obj) + }) + + bus.on('*', function (name, data) { + t.deepEqual(data, obj) + }) + + bus.emit('foo', obj) + }) +}) |
