test: exercise once() with varying arguments
This commit regains test coverage for EventEmitter#once() with four or more arguments. To avoid similar regressions in the future, once() is called with enough arguments to cover all of the separate code paths. PR-URL: https://github.com/nodejs/node/pull/13524 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
1f9b1aa011
commit
637819b7ab
@ -55,3 +55,23 @@ assert.throws(() => {
|
||||
|
||||
ee.once('foo', null);
|
||||
}, /^TypeError: "listener" argument must be a function$/);
|
||||
|
||||
{
|
||||
// once() has different code paths based on the number of arguments being
|
||||
// emitted. Verify that all of the cases are covered.
|
||||
const maxArgs = 4;
|
||||
|
||||
for (let i = 0; i <= maxArgs; ++i) {
|
||||
const ee = new EventEmitter();
|
||||
const args = ['foo'];
|
||||
|
||||
for (let j = 0; j < i; ++j)
|
||||
args.push(j);
|
||||
|
||||
ee.once('foo', common.mustCall((...params) => {
|
||||
assert.deepStrictEqual(params, args.slice(1));
|
||||
}));
|
||||
|
||||
EventEmitter.prototype.emit.apply(ee, args);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user