Commit f7ca4ea2 f7ca4ea2efa30a4a6560c953fd75e89e72c44de9 by Nicolas Perriault

fixed no context was set when applying filter callbacks

1 parent 602e87f5
......@@ -21,7 +21,9 @@
var isArray = Array.isArray;
function EventEmitter() { }
function EventEmitter() {
this._filters = {};
}
exports.EventEmitter = EventEmitter;
// By default EventEmitters will print a warning if more than
......@@ -221,15 +223,18 @@ EventEmitter.prototype.filter = function() {
this._filters = {};
return;
}
var filter = this._filters[type];
if (typeof filter !== 'function') {
return;
}
return filter.apply(null, Array.prototype.splice.call(arguments, 1));
return filter.apply(this, Array.prototype.splice.call(arguments, 1));
};
EventEmitter.prototype.setFilter = function(type, filterFn) {
if (!this._filters) this._filters = {};
if (!this._filters) {
this._filters = {};
}
if ('function' !== typeof filterFn) {
throw new CasperError('setFilter only takes instances of Function');
}
......
// filters
casper.foo = 0;
casper.setFilter("test", function(a) {
this.foo = 42;
return a + 1;
});
casper.test.assert(Object.keys(casper._filters).some(function(i) {
return i === "test";
}), "setFilter() has set a filter");
casper.test.assertEquals(casper.filter("test", 1), 2, "filter() filters a value");
casper.test.assertEquals(casper.foo, 42, "filter() applies the correct context");
delete casper.foo;
casper.test.done();
\ No newline at end of file