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);
}