2020-11-06 12:05:08 +02:00
|
|
|
'use strict';
|
2021-02-04 12:17:44 +02:00
|
|
|
// Flags: --expose-internals --no-warnings
|
2020-11-06 12:05:08 +02:00
|
|
|
const common = require('../common');
|
2021-02-04 12:17:44 +02:00
|
|
|
const { kWeakHandler } = require('internal/event_target');
|
2020-11-06 12:05:08 +02:00
|
|
|
|
|
|
|
const {
|
|
|
|
deepStrictEqual,
|
2022-11-22 15:03:33 -08:00
|
|
|
throws,
|
2020-11-06 12:05:08 +02:00
|
|
|
} = require('assert');
|
|
|
|
|
|
|
|
const { getEventListeners, EventEmitter } = require('events');
|
|
|
|
|
|
|
|
// Test getEventListeners on EventEmitter
|
|
|
|
{
|
|
|
|
const fn1 = common.mustNotCall();
|
|
|
|
const fn2 = common.mustNotCall();
|
|
|
|
const emitter = new EventEmitter();
|
|
|
|
emitter.on('foo', fn1);
|
|
|
|
emitter.on('foo', fn2);
|
|
|
|
emitter.on('baz', fn1);
|
|
|
|
emitter.on('baz', fn1);
|
|
|
|
deepStrictEqual(getEventListeners(emitter, 'foo'), [fn1, fn2]);
|
|
|
|
deepStrictEqual(getEventListeners(emitter, 'bar'), []);
|
|
|
|
deepStrictEqual(getEventListeners(emitter, 'baz'), [fn1, fn1]);
|
|
|
|
}
|
|
|
|
// Test getEventListeners on EventTarget
|
|
|
|
{
|
|
|
|
const fn1 = common.mustNotCall();
|
|
|
|
const fn2 = common.mustNotCall();
|
|
|
|
const target = new EventTarget();
|
|
|
|
target.addEventListener('foo', fn1);
|
|
|
|
target.addEventListener('foo', fn2);
|
|
|
|
target.addEventListener('baz', fn1);
|
|
|
|
target.addEventListener('baz', fn1);
|
|
|
|
deepStrictEqual(getEventListeners(target, 'foo'), [fn1, fn2]);
|
|
|
|
deepStrictEqual(getEventListeners(target, 'bar'), []);
|
|
|
|
deepStrictEqual(getEventListeners(target, 'baz'), [fn1]);
|
|
|
|
}
|
2020-12-29 01:06:34 +08:00
|
|
|
|
|
|
|
{
|
|
|
|
throws(() => {
|
|
|
|
getEventListeners('INVALID_EMITTER');
|
|
|
|
}, /ERR_INVALID_ARG_TYPE/);
|
|
|
|
}
|
2021-02-04 12:17:44 +02:00
|
|
|
{
|
|
|
|
// Test weak listeners
|
|
|
|
const target = new EventTarget();
|
|
|
|
const fn = common.mustNotCall();
|
|
|
|
target.addEventListener('foo', fn, { [kWeakHandler]: {} });
|
|
|
|
const listeners = getEventListeners(target, 'foo');
|
|
|
|
deepStrictEqual(listeners, [fn]);
|
|
|
|
}
|