Add ol.Collection.remove
This commit is contained in:
@@ -6,5 +6,6 @@
|
||||
@exportProperty ol.Collection.prototype.insertAt
|
||||
@exportProperty ol.Collection.prototype.pop
|
||||
@exportProperty ol.Collection.prototype.push
|
||||
@exportProperty ol.Collection.prototype.remove
|
||||
@exportProperty ol.Collection.prototype.removeAt
|
||||
@exportProperty ol.Collection.prototype.setAt
|
||||
|
||||
@@ -159,6 +159,22 @@ ol.Collection.prototype.push = function(elem) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Removes the first occurence of elem from the collection.
|
||||
* @param {*} elem Element.
|
||||
* @return {*} The removed element or undefined if elem was not found.
|
||||
*/
|
||||
ol.Collection.prototype.remove = function(elem) {
|
||||
var i;
|
||||
for (i = 0; i < this.array_.length; ++i) {
|
||||
if (this.array_[i] === elem) {
|
||||
return this.removeAt(i);
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} index Index.
|
||||
* @return {*} Value.
|
||||
|
||||
@@ -104,6 +104,35 @@ describe('ol.collection', function() {
|
||||
});
|
||||
});
|
||||
|
||||
describe('remove', function() {
|
||||
it('removes the first matching element', function() {
|
||||
var collection = new ol.Collection([0, 1, 2]);
|
||||
expect(collection.remove(1)).toEqual(1);
|
||||
expect(collection.getArray()).toEqual([0, 2]);
|
||||
expect(collection.getLength()).toEqual(2);
|
||||
});
|
||||
it('fires a remove event', function() {
|
||||
var collection = new ol.Collection([0, 1, 2]);
|
||||
var cb = jasmine.createSpy();
|
||||
goog.events.listen(collection, ol.CollectionEventType.REMOVE, cb);
|
||||
expect(collection.remove(1)).toEqual(1);
|
||||
expect(cb).toHaveBeenCalled();
|
||||
expect(cb.mostRecentCall.args[0].elem).toEqual(1);
|
||||
});
|
||||
it('does not remove more than one matching element', function() {
|
||||
var collection = new ol.Collection([0, 1, 1, 2]);
|
||||
expect(collection.remove(1)).toEqual(1);
|
||||
expect(collection.getArray()).toEqual([0, 1, 2]);
|
||||
expect(collection.getLength()).toEqual(3);
|
||||
});
|
||||
it('returns undefined if the element is not found', function() {
|
||||
var collection = new ol.Collection([0, 1, 2]);
|
||||
expect(collection.remove(3)).toBeUndefined();
|
||||
expect(collection.getArray()).toEqual([0, 1, 2]);
|
||||
expect(collection.getLength()).toEqual(3);
|
||||
});
|
||||
});
|
||||
|
||||
describe('setAt and event', function() {
|
||||
it('does dispatch events', function() {
|
||||
var collection = new ol.Collection(['a', 'b']);
|
||||
|
||||
Reference in New Issue
Block a user