signal stress tests

This commit is contained in:
Dima Granetchi
2014-11-13 21:32:35 +02:00
parent f7c2e07731
commit 1a9dc7f40d
2 changed files with 48 additions and 1 deletions
+2 -1
View File
@@ -220,7 +220,8 @@ class Signal<T> {
public function add(listener:T):Void {
var pos = listeners.indexOf(listener);
if (pos == -1) checkLock(); else listeners.splice(pos, 1);
checkLock();
if (pos > -1) listeners.splice(pos, 1);
listeners.push(listener);
}
+46
View File
@@ -49,6 +49,52 @@ class SignalTest extends BuddySuite {
callNum.should.be(3);
});
it("signal should correct add/remove listeners", {
function listener2(_, _) {
callNum ++;
}
function listener(_, _) {
fs.add(listener2);
callNum++;
}
fs.add(listener);
fs.dispatch(null, null);
callNum.should.be(1); // 1 listener only
fs.dispatch(null, null);
callNum.should.be(3); // listener2 added
fs.remove(listener2);
fs.dispatch(null, null);
callNum.should.be(4); // listener2 removed
fs.removeAll();
fs.dispatch(null, null);
callNum.should.be(4); // all listeners removed
});
it("signal should correct dispatch in listener", {
function listener(_, _) {
fs.remove(listener);
fs.dispatch(null, null);
callNum++;
}
var callNum2 = 0;
function listener2(_, _) callNum2++;
fs.add(listener);
fs.add(listener2);
fs.dispatch(null, null);
callNum.should.be(1);
callNum2.should.be(2);
});
});
describe("MethodSignal functionality tests", {