mirror of
https://github.com/nodejs/node-v0.x-archive.git
synced 2026-04-28 03:01:10 -04:00
Add test: modifying event listeners during callback.
This commit is contained in:
committed by
Ryan Dahl
parent
3eaaaffadb
commit
9f6f19df1b
32
test/mjsunit/test-event-emitter-modify-in-emit.js
Normal file
32
test/mjsunit/test-event-emitter-modify-in-emit.js
Normal file
@@ -0,0 +1,32 @@
|
||||
process.mixin(require("./common"));
|
||||
var events = require('events');
|
||||
|
||||
var callbacks_called = [ ];
|
||||
|
||||
var e = new events.EventEmitter();
|
||||
|
||||
function callback1() {
|
||||
callbacks_called.push("callback1");
|
||||
e.addListener("foo", callback2);
|
||||
e.removeListener("foo", callback1);
|
||||
}
|
||||
|
||||
function callback2() {
|
||||
callbacks_called.push("callback2");
|
||||
e.removeListener("foo", callback2);
|
||||
}
|
||||
|
||||
e.addListener("foo", callback1);
|
||||
assert.equal(1, e.listeners("foo").length);
|
||||
|
||||
e.emit("foo");
|
||||
assert.equal(1, e.listeners("foo").length);
|
||||
assert.deepEqual(["callback1"], callbacks_called);
|
||||
|
||||
e.emit("foo");
|
||||
assert.equal(0, e.listeners("foo").length);
|
||||
assert.deepEqual(["callback1", "callback2"], callbacks_called);
|
||||
|
||||
e.emit("foo");
|
||||
assert.equal(0, e.listeners("foo").length);
|
||||
assert.deepEqual(["callback1", "callback2"], callbacks_called);
|
||||
Reference in New Issue
Block a user