From: Michael Stillwell Date: Tue, 9 Feb 2010 22:32:52 +0000 (+0000) Subject: Add test: modifying event listeners during callback. X-Git-Tag: v0.1.29~37 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9f6f19df1bab8bd3bad0ec00ed0489957c7cfacf;p=platform%2Fupstream%2Fnodejs.git Add test: modifying event listeners during callback. --- diff --git a/test/mjsunit/test-event-emitter-modify-in-emit.js b/test/mjsunit/test-event-emitter-modify-in-emit.js new file mode 100644 index 0000000..7bb2eb3 --- /dev/null +++ b/test/mjsunit/test-event-emitter-modify-in-emit.js @@ -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);