@qooxdoo/framework
Version:
The JS Framework for Coders
204 lines (153 loc) • 4.76 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2007-2012 1&1 Internet AG, Germany, http://www.1und1.de
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Martin Wittemann (wittemann)
************************************************************************ */
qx.Class.define("qx.test.event.Emitter",
{
extend : qx.dev.unit.TestCase,
include : [ qx.dev.unit.MMock, qx.dev.unit.MRequirements ],
members : {
__ee : null,
setUp : function() {
this.__ee = new qx.event.Emitter();
},
testOnOff : function() {
var spy = this.spy();
this.__ee.on("test", spy, this);
this.__ee.emit("test");
this.assertCalledOnce(spy);
this.assertCalledOn(spy, this);
this.__ee.off("test", spy, this);
this.__ee.emit("test");
this.assertCalledOnce(spy);
},
testOnOffById : function() {
var spy = this.spy();
var id = this.__ee.on("test", spy, this);
this.__ee.emit("test");
this.assertCalledOnce(spy);
this.__ee.offById(id);
this.__ee.emit("test");
this.assertCalledOnce(spy);
},
testOffReturnId : function() {
var spy = this.spy();
this.__ee.on("test", spy, this);
var id = this.__ee.on("test2", spy, this);
var returnId = this.__ee.off("test2", spy, this);
this.assertEquals(id, returnId);
},
testAddRemove : function() {
var spy = this.spy();
this.__ee.addListener("test", spy, this);
this.__ee.emit("test");
this.assertCalledOnce(spy);
this.__ee.removeListener("test", spy, this);
this.__ee.emit("test");
this.assertCalledOnce(spy);
},
/**
* @lint ignoreDeprecated(alert, eval)
*/
testAddAsyncFunction : function() {
this.require(["asyncFunctions"]);
var f = eval("f = async function(){};");
this.__ee.addListener("test", f, this);
this.__ee.emit("test");
this.__ee.removeListener("test", f, this);
this.__ee.emit("test");
},
testAddRemoveById : function() {
var spy = this.spy();
var id = this.__ee.addListener("test", spy, this);
this.__ee.emit("test");
this.assertCalledOnce(spy);
this.__ee.removeListenerById(id);
this.__ee.emit("test");
this.assertCalledOnce(spy);
},
testOnTwoListeners : function() {
var spy1 = this.spy();
var spy2 = this.spy();
this.__ee.on("test", spy1);
this.__ee.on("test", spy2);
this.__ee.emit("test");
this.assertCalledOnce(spy1);
this.assertCalledOnce(spy2);
this.__ee.off("test", spy1);
this.__ee.emit("test");
this.assertCalledOnce(spy1);
this.assertCalledTwice(spy2);
},
testTwoEvents : function() {
var spy1 = this.spy();
var spy2 = this.spy();
this.__ee.on("test1", spy1);
this.__ee.on("test2", spy2);
this.__ee.emit("test1");
this.assertCalledOnce(spy1);
this.assertNotCalled(spy2);
this.__ee.emit("test2");
this.assertCalledOnce(spy1);
this.assertCalledOnce(spy2);
},
testOnce : function() {
var spy = this.spy();
this.__ee.once("test", spy);
this.__ee.emit("test");
this.assertCalledOnce(spy);
this.__ee.emit("test");
this.assertCalledOnce(spy);
},
testAddListenerOnce : function() {
var spy = this.spy();
this.__ee.addListenerOnce("test", spy);
this.__ee.emit("test");
this.assertCalledOnce(spy);
this.__ee.emit("test");
this.assertCalledOnce(spy);
},
testOnAny : function() {
var spy = this.spy();
this.__ee.on("*", spy);
this.__ee.emit("test");
this.assertCalledOnce(spy);
this.__ee.emit("test2");
this.assertCalledTwice(spy);
},
testAddListenerAny : function() {
var spy = this.spy();
this.__ee.addListener("*", spy);
this.__ee.emit("test");
this.assertCalledOnce(spy);
this.__ee.emit("test2");
this.assertCalledTwice(spy);
},
testEmitData : function() {
var spy = this.spy();
this.__ee.on("test", spy);
this.__ee.emit("test", 123);
this.assertCalledWith(spy, 123);
},
testEmitOrder : function() {
var i = 0;
this.__ee.on("test", function() {
i++;
this.assertEquals(1, i);
}, this);
this.__ee.on("test", function() {
i++;
this.assertEquals(2, i);
}, this);
this.__ee.emit("test");
this.assertEquals(2, i);
}
}
});