Initial commit
This commit is contained in:
100
node_modules/events/tests/events-once.js
generated
vendored
Normal file
100
node_modules/events/tests/events-once.js
generated
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
'use strict';
|
||||
|
||||
var common = require('./common');
|
||||
var EventEmitter = require('../').EventEmitter;
|
||||
var once = require('../').once;
|
||||
var assert = require('assert');
|
||||
|
||||
function onceAnEvent() {
|
||||
var ee = new EventEmitter();
|
||||
|
||||
process.nextTick(function () {
|
||||
ee.emit('myevent', 42);
|
||||
});
|
||||
|
||||
return once(ee, 'myevent').then(function (args) {
|
||||
var value = args[0]
|
||||
assert.strictEqual(value, 42);
|
||||
assert.strictEqual(ee.listenerCount('error'), 0);
|
||||
assert.strictEqual(ee.listenerCount('myevent'), 0);
|
||||
});
|
||||
}
|
||||
|
||||
function onceAnEventWithTwoArgs() {
|
||||
var ee = new EventEmitter();
|
||||
|
||||
process.nextTick(function () {
|
||||
ee.emit('myevent', 42, 24);
|
||||
});
|
||||
|
||||
return once(ee, 'myevent').then(function (value) {
|
||||
assert.strictEqual(value.length, 2);
|
||||
assert.strictEqual(value[0], 42);
|
||||
assert.strictEqual(value[1], 24);
|
||||
});
|
||||
}
|
||||
|
||||
function catchesErrors() {
|
||||
var ee = new EventEmitter();
|
||||
|
||||
var expected = new Error('kaboom');
|
||||
var err;
|
||||
process.nextTick(function () {
|
||||
ee.emit('error', expected);
|
||||
});
|
||||
|
||||
return once(ee, 'myevent').then(function () {
|
||||
throw new Error('should reject')
|
||||
}, function (err) {
|
||||
assert.strictEqual(err, expected);
|
||||
assert.strictEqual(ee.listenerCount('error'), 0);
|
||||
assert.strictEqual(ee.listenerCount('myevent'), 0);
|
||||
});
|
||||
}
|
||||
|
||||
function stopListeningAfterCatchingError() {
|
||||
var ee = new EventEmitter();
|
||||
|
||||
var expected = new Error('kaboom');
|
||||
var err;
|
||||
process.nextTick(function () {
|
||||
ee.emit('error', expected);
|
||||
ee.emit('myevent', 42, 24);
|
||||
});
|
||||
|
||||
// process.on('multipleResolves', common.mustNotCall());
|
||||
|
||||
return once(ee, 'myevent').then(common.mustNotCall, function (err) {
|
||||
// process.removeAllListeners('multipleResolves');
|
||||
assert.strictEqual(err, expected);
|
||||
assert.strictEqual(ee.listenerCount('error'), 0);
|
||||
assert.strictEqual(ee.listenerCount('myevent'), 0);
|
||||
});
|
||||
}
|
||||
|
||||
function onceError() {
|
||||
var ee = new EventEmitter();
|
||||
|
||||
var expected = new Error('kaboom');
|
||||
process.nextTick(function () {
|
||||
ee.emit('error', expected);
|
||||
});
|
||||
|
||||
return once(ee, 'error').then(function (args) {
|
||||
var err = args[0]
|
||||
assert.strictEqual(err, expected);
|
||||
assert.strictEqual(ee.listenerCount('error'), 0);
|
||||
assert.strictEqual(ee.listenerCount('myevent'), 0);
|
||||
});
|
||||
}
|
||||
|
||||
Promise.all([
|
||||
onceAnEvent(),
|
||||
onceAnEventWithTwoArgs(),
|
||||
catchesErrors(),
|
||||
stopListeningAfterCatchingError(),
|
||||
onceError()
|
||||
]).catch(function (err) {
|
||||
console.error(err.stack)
|
||||
process.exit(1)
|
||||
});
|
||||
Reference in New Issue
Block a user