| var test = require('tap').test |
| var EE = require('events').EventEmitter |
| var etoa = require('../etoa.js') |
| |
| test('basic', function (t) { |
| var emitter = new EE() |
| var array = etoa(emitter, ['ignore', 'alsoignore']) |
| |
| emitter.emit('foo', 1, 2, 3) |
| emitter.emit('ignore', 'should not see this') |
| emitter.emit('bar', { x: 1 }) |
| |
| // nested events get tracked as well |
| var subemit = new EE() |
| emitter.emit('sub', subemit) |
| subemit.emit('childEvent', { some: 'data' }) |
| subemit.emit('alsoignore', 'should not see this') |
| subemit.emit('anotherone', { some: 'data' }, 'many', 'args') |
| |
| // CAVEAT! |
| emitter.emit('blaz', 'blorrg') |
| subemit.emit('order', 'not', 'preserved between child and parent') |
| |
| // check out the array whenever |
| t.same(array, |
| [ [ 'foo', 1, 2, 3 ], |
| [ 'bar', { x: 1 } ], |
| [ 'sub', |
| [ [ 'childEvent', { some: 'data' } ], |
| [ 'anotherone', { some: 'data' }, 'many', 'args' ], |
| [ 'order', 'not', 'preserved between child and parent' ] ] ], |
| [ 'blaz', 'blorrg' ] ]) |
| t.end() |
| }) |
| |
| test('ignore nothing', function (t) { |
| var emitter = new EE() |
| var array = etoa(emitter) |
| emitter.emit('foo', 1, 2, 3) |
| emitter.emit('ignore', 'should see this') |
| emitter.emit('bar', { x: 1 }) |
| t.same(array, |
| [ [ 'foo', 1, 2, 3 ], |
| [ 'ignore', 'should see this' ], |
| [ 'bar', { x: 1 } ] ]) |
| |
| t.end() |
| }) |
| |
| test('the map is not the territory', function (t) { |
| var emitter = new EE() |
| // cast all to strings |
| var array = etoa(emitter, ['ignore'], function (arg) { |
| return arg + '' |
| }) |
| |
| emitter.emit('foo', new Buffer('hello')) |
| var sub = new EE() |
| emitter.emit('sub', sub) |
| sub.emit('obj', { toString: function () { return 'toString fn' } }) |
| t.same(array, |
| [ ['foo', 'hello' ], |
| [ 'sub', [ [ 'obj', 'toString fn' ] ] ] ]) |
| t.end() |
| }) |