summaryrefslogtreecommitdiffstats
path: root/node_modules/events/tests/events-once.js
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
commite06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch)
tree55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/events/tests/events-once.js
downloadwebsite_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip
api, login, auth
Diffstat (limited to 'node_modules/events/tests/events-once.js')
-rw-r--r--node_modules/events/tests/events-once.js100
1 files changed, 100 insertions, 0 deletions
diff --git a/node_modules/events/tests/events-once.js b/node_modules/events/tests/events-once.js
new file mode 100644
index 0000000..309bf45
--- /dev/null
+++ b/node_modules/events/tests/events-once.js
@@ -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)
+});