diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/nanobus/test.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
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) + }) +}) |
