diff options
author | blairzhao111 <blairzhao111@gmail.com> | 2020-06-09 21:07:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-09 15:07:25 +0200 |
commit | 6c21ba05752c6d645c891fa8d90781f943f0f74c (patch) | |
tree | 3e39abf8824fc4dd3e3d4a051476f15021df5fbf /std/node/events_test.ts | |
parent | 878f306a39812eb71e31cc4dd6e8e0b313c3cecb (diff) |
fix(std/node): emitter.removeAllListeners (#5583)
When given a non-registered eventName to
emitter.removeAllListeners(eventName), current code
would remove all listeners instead of silently skip,
which is not ideal.
Diffstat (limited to 'std/node/events_test.ts')
-rw-r--r-- | std/node/events_test.ts | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/std/node/events_test.ts b/std/node/events_test.ts index 3c3628e3a..4b47686f4 100644 --- a/std/node/events_test.ts +++ b/std/node/events_test.ts @@ -246,6 +246,25 @@ test({ }); test({ + name: "Provide a non-existent event to removeAllListeners will do nothing", + fn() { + const testEmitter = new EventEmitter(); + testEmitter.on("event", shouldNeverBeEmitted); + testEmitter.on("event", shouldNeverBeEmitted); + testEmitter.on("other event", shouldNeverBeEmitted); + testEmitter.on("other event", shouldNeverBeEmitted); + testEmitter.once("other event", shouldNeverBeEmitted); + assertEquals(testEmitter.listenerCount("event"), 2); + assertEquals(testEmitter.listenerCount("other event"), 3); + + testEmitter.removeAllListeners("non-existent"); + + assertEquals(testEmitter.listenerCount("event"), 2); + assertEquals(testEmitter.listenerCount("other event"), 3); + }, +}); + +test({ name: "Remove individual listeners, which can also be chained", fn() { const testEmitter = new EventEmitter(); |