summaryrefslogtreecommitdiff
path: root/std/node/events_test.ts
diff options
context:
space:
mode:
authorblairzhao111 <blairzhao111@gmail.com>2020-06-09 21:07:25 +0800
committerGitHub <noreply@github.com>2020-06-09 15:07:25 +0200
commit6c21ba05752c6d645c891fa8d90781f943f0f74c (patch)
tree3e39abf8824fc4dd3e3d4a051476f15021df5fbf /std/node/events_test.ts
parent878f306a39812eb71e31cc4dd6e8e0b313c3cecb (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.ts19
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();