diff --git a/spec/runner.html b/spec/runner.html index e0cc8b71..d2c7d6c5 100644 --- a/spec/runner.html +++ b/spec/runner.html @@ -47,6 +47,7 @@ + diff --git a/spec/suites/layer/LayerGroupSpec.js b/spec/suites/layer/LayerGroupSpec.js new file mode 100644 index 00000000..b1327a79 --- /dev/null +++ b/spec/suites/layer/LayerGroupSpec.js @@ -0,0 +1,58 @@ +describe('LayerGroup', function () { + describe("#addLayer", function () { + it('adds a layer', function() { + var lg = L.layerGroup(), + marker = L.marker([0, 0]); + + expect(lg.addLayer(marker)).toEqual(lg); + + expect(lg.hasLayer(marker)).toBe(true); + }); + }); + describe("#removeLayer", function () { + it('removes a layer', function() { + var lg = L.layerGroup(), + marker = L.marker([0, 0]); + + lg.addLayer(marker); + expect(lg.removeLayer(marker)).toEqual(lg); + + expect(lg.hasLayer(marker)).toBe(false); + }); + }); + describe("#clearLayers", function () { + it('removes all layers', function() { + var lg = L.layerGroup(), + marker = L.marker([0, 0]); + + lg.addLayer(marker); + expect(lg.clearLayers()).toEqual(lg); + + expect(lg.hasLayer(marker)).toBe(false); + }); + }); + describe("#getLayers", function () { + it('gets all layers', function() { + var lg = L.layerGroup(), + marker = L.marker([0, 0]); + + lg.addLayer(marker); + + expect(lg.getLayers()).toEqual([marker]); + }); + }); + describe("#eachLayer", function () { + it('iterates over all layers', function() { + var lg = L.layerGroup(), + marker = L.marker([0, 0]), + ctx = { foo: 'bar' }; + + lg.addLayer(marker); + + lg.eachLayer(function(layer) { + expect(layer).toEqual(marker); + expect(this).toEqual(ctx); + }, ctx); + }); + }); +}); diff --git a/src/layer/LayerGroup.js b/src/layer/LayerGroup.js index 395f501e..f6ff8e53 100644 --- a/src/layer/LayerGroup.js +++ b/src/layer/LayerGroup.js @@ -93,6 +93,16 @@ L.LayerGroup = L.Class.extend({ return this; }, + getLayers: function () { + var layers = []; + for (var i in this._layers) { + if (this._layers.hasOwnProperty(i)) { + layers.push(this._layers[i]); + } + } + return layers; + }, + setZIndex: function (zIndex) { return this.invoke('setZIndex', zIndex); }