diff --git a/src/ol/style/fillsymbolizer.js b/src/ol/style/fillsymbolizer.js index 6305315c12..0ef25c967a 100644 --- a/src/ol/style/fillsymbolizer.js +++ b/src/ol/style/fillsymbolizer.js @@ -43,7 +43,7 @@ ol.style.Fill = function(opt_options) { * @private */ this.zIndex_ = !goog.isDefAndNotNull(options.zIndex) ? - null : + new ol.expr.Literal(ol.style.FillDefaults.zIndex) : (options.zIndex instanceof ol.expr.Expression) ? options.zIndex : new ol.expr.Literal(options.zIndex); @@ -76,11 +76,8 @@ ol.style.Fill.prototype.createLiteral = function(featureOrType) { var opacity = Number(ol.expr.evaluateFeature(this.opacity_, feature)); goog.asserts.assert(!isNaN(opacity), 'opacity must be a number'); - var zIndex; - if (!goog.isNull(this.zIndex_)) { - zIndex = Number(ol.expr.evaluateFeature(this.zIndex_, feature)); - goog.asserts.assert(!isNaN(zIndex), 'zIndex must be a number'); - } + var zIndex = Number(ol.expr.evaluateFeature(this.zIndex_, feature)); + goog.asserts.assert(!isNaN(zIndex), 'zIndex must be a number'); literal = new ol.style.PolygonLiteral({ fillColor: color, @@ -151,10 +148,12 @@ ol.style.Fill.prototype.setZIndex = function(zIndex) { /** - * @typedef {{fillColor: (string), - * fillOpacity: (number)}} + * @typedef {{fillColor: string, + * fillOpacity: number, + * zIndex: number}} */ ol.style.FillDefaults = { color: '#ffffff', - opacity: 0.4 + opacity: 0.4, + zIndex: 0 }; diff --git a/src/ol/style/iconliteral.js b/src/ol/style/iconliteral.js index c84997e0af..81ee54f326 100644 --- a/src/ol/style/iconliteral.js +++ b/src/ol/style/iconliteral.js @@ -1,5 +1,6 @@ goog.provide('ol.style.IconLiteral'); +goog.require('goog.asserts'); goog.require('ol.style.PointLiteral'); @@ -11,7 +12,7 @@ goog.require('ol.style.PointLiteral'); * rotation: number, * xOffset: number, * yOffset: number, - * zIndex: (number|undefined)}} + * zIndex: number}} */ ol.style.IconLiteralOptions; @@ -45,7 +46,9 @@ ol.style.IconLiteral = function(options) { /** @type {number} */ this.yOffset = options.yOffset; - /** @type {number|undefined} */ + goog.asserts.assertNumber( + options.zIndex, 'zIndex must be a number'); + /** @type {number} */ this.zIndex = options.zIndex; }; diff --git a/src/ol/style/iconsymbolizer.js b/src/ol/style/iconsymbolizer.js index 78f6e3eb89..284dce51fe 100644 --- a/src/ol/style/iconsymbolizer.js +++ b/src/ol/style/iconsymbolizer.js @@ -86,7 +86,7 @@ ol.style.Icon = function(options) { * @private */ this.zIndex_ = !goog.isDefAndNotNull(options.zIndex) ? - null : + new ol.expr.Literal(ol.style.IconDefaults.zIndex) : (options.zIndex instanceof ol.expr.Expression) ? options.zIndex : new ol.expr.Literal(options.zIndex); @@ -139,11 +139,8 @@ ol.style.Icon.prototype.createLiteral = function(featureOrType) { var yOffset = Number(ol.expr.evaluateFeature(this.yOffset_, feature)); goog.asserts.assert(!isNaN(yOffset), 'yOffset must be a number'); - var zIndex; - if (!goog.isNull(this.zIndex_)) { - zIndex = Number(ol.expr.evaluateFeature(this.zIndex_, feature)); - goog.asserts.assert(!isNaN(zIndex), 'zIndex must be a number'); - } + var zIndex = Number(ol.expr.evaluateFeature(this.zIndex_, feature)); + goog.asserts.assert(!isNaN(zIndex), 'zIndex must be a number'); literal = new ol.style.IconLiteral({ url: url, @@ -317,11 +314,13 @@ ol.style.Icon.prototype.setZIndex = function(zIndex) { * @typedef {{opacity: number, * rotation: number, * xOffset: number, - * yOffset: number}} + * yOffset: number, + * zIndex: number}} */ ol.style.IconDefaults = { opacity: 1, rotation: 0, xOffset: 0, - yOffset: 0 + yOffset: 0, + zIndex: 0 }; diff --git a/src/ol/style/lineliteral.js b/src/ol/style/lineliteral.js index 6ba2759d8e..c13198c630 100644 --- a/src/ol/style/lineliteral.js +++ b/src/ol/style/lineliteral.js @@ -5,10 +5,10 @@ goog.require('ol.style.Literal'); /** - * @typedef {{color: (string), - * opacity: (number), - * width: (number), - * zIndex: (number|undefined)}} + * @typedef {{color: string, + * opacity: number, + * width: number, + * zIndex: number}} */ ol.style.LineLiteralOptions; @@ -37,7 +37,9 @@ ol.style.LineLiteral = function(options) { /** @type {number} */ this.width = options.width; - /** @type {number|undefined} */ + goog.asserts.assertNumber( + options.zIndex, 'zIndex must be a number'); + /** @type {number} */ this.zIndex = options.zIndex; }; diff --git a/src/ol/style/polygonliteral.js b/src/ol/style/polygonliteral.js index 3b6c4316f3..e16c482860 100644 --- a/src/ol/style/polygonliteral.js +++ b/src/ol/style/polygonliteral.js @@ -10,7 +10,7 @@ goog.require('ol.style.Literal'); * strokeColor: (string|undefined), * strokeOpacity: (number|undefined), * strokeWidth: (number|undefined), - * zIndex: (number|undefined)}} + * zIndex: number}} */ ol.style.PolygonLiteralOptions; @@ -67,7 +67,9 @@ ol.style.PolygonLiteral = function(options) { 'Either fillColor and fillOpacity or ' + 'strokeColor and strokeOpacity and strokeWidth must be set'); - /** @type {number|undefined} */ + goog.asserts.assertNumber( + options.zIndex, 'zIndex must be a number'); + /** @type {number} */ this.zIndex = options.zIndex; }; diff --git a/src/ol/style/shapeliteral.js b/src/ol/style/shapeliteral.js index 9d95a2418f..602c58c28b 100644 --- a/src/ol/style/shapeliteral.js +++ b/src/ol/style/shapeliteral.js @@ -21,7 +21,7 @@ ol.style.ShapeType = { * strokeColor: (string|undefined), * strokeOpacity: (number|undefined), * strokeWidth: (number|undefined), - * zIndex: (number|undefined)}} + * zIndex: number}} */ ol.style.ShapeLiteralOptions; @@ -85,7 +85,9 @@ ol.style.ShapeLiteral = function(options) { 'Either fillColor and fillOpacity or ' + 'strokeColor and strokeOpacity and strokeWidth must be set'); - /** @type {number|undefined} */ + goog.asserts.assertNumber( + options.zIndex, 'zIndex must be a number'); + /** @type {number} */ this.zIndex = options.zIndex; }; diff --git a/src/ol/style/shapesymbolizer.js b/src/ol/style/shapesymbolizer.js index d9074319f1..6c4ffde4f8 100644 --- a/src/ol/style/shapesymbolizer.js +++ b/src/ol/style/shapesymbolizer.js @@ -58,7 +58,7 @@ ol.style.Shape = function(options) { * @private */ this.zIndex_ = !goog.isDefAndNotNull(options.zIndex) ? - null : + new ol.expr.Literal(ol.style.ShapeDefaults.zIndex) : (options.zIndex instanceof ol.expr.Expression) ? options.zIndex : new ol.expr.Literal(options.zIndex); @@ -109,11 +109,8 @@ ol.style.Shape.prototype.createLiteral = function(featureOrType) { goog.asserts.assert(!isNaN(strokeWidth), 'strokeWidth must be a number'); } - var zIndex; - if (!goog.isNull(this.zIndex_)) { - zIndex = Number(ol.expr.evaluateFeature(this.zIndex_, feature)); - goog.asserts.assert(!isNaN(zIndex), 'zIndex must be a number'); - } + var zIndex = Number(ol.expr.evaluateFeature(this.zIndex_, feature)); + goog.asserts.assert(!isNaN(zIndex), 'zIndex must be a number'); literal = new ol.style.ShapeLiteral({ type: this.type_, @@ -230,10 +227,12 @@ ol.style.Shape.prototype.setZIndex = function(zIndex) { /** - * @typedef {{type: (ol.style.ShapeType), - * size: (number)}} + * @typedef {{type: ol.style.ShapeType, + * size: number, + * zIndex: number}} */ ol.style.ShapeDefaults = { type: ol.style.ShapeType.CIRCLE, - size: 5 + size: 5, + zIndex: 0 }; diff --git a/src/ol/style/strokesymbolizer.js b/src/ol/style/strokesymbolizer.js index 6997f63e94..610c79fc4e 100644 --- a/src/ol/style/strokesymbolizer.js +++ b/src/ol/style/strokesymbolizer.js @@ -54,7 +54,7 @@ ol.style.Stroke = function(opt_options) { * @private */ this.zIndex_ = !goog.isDefAndNotNull(options.zIndex) ? - null : + new ol.expr.Literal(ol.style.StrokeDefaults.zIndex) : (options.zIndex instanceof ol.expr.Expression) ? options.zIndex : new ol.expr.Literal(options.zIndex); @@ -88,11 +88,8 @@ ol.style.Stroke.prototype.createLiteral = function(featureOrType) { this.width_, feature)); goog.asserts.assert(!isNaN(width), 'width must be a number'); - var zIndex; - if (!goog.isNull(this.zIndex_)) { - zIndex = Number(ol.expr.evaluateFeature(this.zIndex_, feature)); - goog.asserts.assert(!isNaN(zIndex), 'zIndex must be a number'); - } + var zIndex = Number(ol.expr.evaluateFeature(this.zIndex_, feature)); + goog.asserts.assert(!isNaN(zIndex), 'zIndex must be a number'); var literal = null; if (type === ol.geom.GeometryType.LINESTRING || @@ -194,24 +191,28 @@ ol.style.Stroke.prototype.setZIndex = function(zIndex) { /** - * @typedef {{strokeColor: (string), - * strokeOpacity: (number), - * strokeWidth: (number)}} + * @typedef {{strokeColor: string, + * strokeOpacity: number, + * strokeWidth: number, + * zIndex: number}} */ ol.style.StrokeDefaults = { color: '#696969', opacity: 0.75, - width: 1.5 + width: 1.5, + zIndex: 0 }; /** - * @typedef {{color: (string), - * opacity: (number), - * width: (number)}} + * @typedef {{color: string, + * opacity: number, + * width: number, + * zIndex: number}} */ ol.style.StrokeDefaultsSelect = { color: '#696969', opacity: 0.9, - width: 2.0 + width: 2.0, + zIndex: 0 }; diff --git a/src/ol/style/textliteral.js b/src/ol/style/textliteral.js index 948ccdf673..ec3036bed3 100644 --- a/src/ol/style/textliteral.js +++ b/src/ol/style/textliteral.js @@ -10,7 +10,7 @@ goog.require('ol.style.Literal'); * fontSize: number, * text: string, * opacity: number, - * zIndex: (number|undefined)}} + * zIndex: number}} */ ol.style.TextLiteralOptions; @@ -43,7 +43,8 @@ ol.style.TextLiteral = function(options) { /** @type {number} */ this.opacity = options.opacity; - /** @type {number|undefined} */ + goog.asserts.assertNumber(options.zIndex, 'zIndex must be a number'); + /** @type {number} */ this.zIndex = options.zIndex; }; diff --git a/src/ol/style/textsymbolizer.js b/src/ol/style/textsymbolizer.js index 3daac82b91..95e00864f0 100644 --- a/src/ol/style/textsymbolizer.js +++ b/src/ol/style/textsymbolizer.js @@ -65,7 +65,7 @@ ol.style.Text = function(options) { * @private */ this.zIndex_ = !goog.isDefAndNotNull(options.zIndex) ? - null : + new ol.expr.Literal(ol.style.TextDefaults.zIndex) : (options.zIndex instanceof ol.expr.Expression) ? options.zIndex : new ol.expr.Literal(options.zIndex); @@ -102,11 +102,8 @@ ol.style.Text.prototype.createLiteral = function(featureOrType) { var opacity = Number(ol.expr.evaluateFeature(this.opacity_, feature)); goog.asserts.assert(!isNaN(opacity), 'opacity must be a number'); - var zIndex; - if (!goog.isNull(this.zIndex_)) { - zIndex = Number(ol.expr.evaluateFeature(this.zIndex_, feature)); - goog.asserts.assert(!isNaN(zIndex), 'zIndex must be a number'); - } + var zIndex = Number(ol.expr.evaluateFeature(this.zIndex_, feature)); + goog.asserts.assert(!isNaN(zIndex), 'zIndex must be a number'); return new ol.style.TextLiteral({ color: color, @@ -237,11 +234,13 @@ ol.style.Text.prototype.setZIndex = function(zIndex) { * @typedef {{color: string, * fontFamily: string, * fontSize: number, - * opacity: number}} + * opacity: number, + * zIndex: number}} */ ol.style.TextDefaults = { color: '#000', fontFamily: 'sans-serif', fontSize: 10, - opacity: 1 + opacity: 1, + zIndex: 0 }; diff --git a/test/spec/ol/style/fillsymbolizer.test.js b/test/spec/ol/style/fillsymbolizer.test.js index 2d74b71730..d3b58223c7 100644 --- a/test/spec/ol/style/fillsymbolizer.test.js +++ b/test/spec/ol/style/fillsymbolizer.test.js @@ -49,7 +49,7 @@ describe('ol.style.Fill', function() { expect(literal).to.be.a(ol.style.PolygonLiteral); expect(literal.fillOpacity).to.be(42 / 100); expect(literal.fillColor).to.be('#ff0000'); - expect(literal.zIndex).to.be(undefined); + expect(literal.zIndex).to.be(0); }); it('applies default opacity', function() { @@ -104,6 +104,33 @@ describe('ol.style.Fill', function() { expect(literal.zIndex).to.be(2); }); + it('applies default zIndex', function() { + var symbolizer = new ol.style.Fill({ + opacity: 0.8 + }); + + var literal = symbolizer.createLiteral(ol.geom.GeometryType.POLYGON); + expect(literal).to.be.a(ol.style.PolygonLiteral); + expect(literal.zIndex).to.be(0); + }); + + it('casts zIndex to number', function() { + var symbolizer = new ol.style.Fill({ + zIndex: ol.expr.parse('zIndex'), + color: '#ff00ff' + }); + + var feature = new ol.Feature({ + zIndex: '11', + geometry: new ol.geom.Polygon( + [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]]) + }); + + var literal = symbolizer.createLiteral(feature); + expect(literal).to.be.a(ol.style.PolygonLiteral); + expect(literal.zIndex).to.be(11); + }); + }); describe('#getColor()', function() { @@ -135,6 +162,21 @@ describe('ol.style.Fill', function() { }); + describe('#getZIndex()', function() { + + it('returns the zIndex', function() { + var symbolizer = new ol.style.Fill({ + color: '#ffffff', + zIndex: 11 + }); + + var zIndex = symbolizer.getZIndex(); + expect(zIndex).to.be.a(ol.expr.Literal); + expect(zIndex.getValue()).to.be(11); + }); + + }); + describe('#setColor()', function() { it('sets the fill color', function() { diff --git a/test/spec/ol/style/iconliteral.test.js b/test/spec/ol/style/iconliteral.test.js index eac009d4e2..4f5aed80f1 100644 --- a/test/spec/ol/style/iconliteral.test.js +++ b/test/spec/ol/style/iconliteral.test.js @@ -10,49 +10,56 @@ describe('ol.style.IconLiteral', function() { width: 20, opacity: 1, rotation: 0.1, - url: 'http://example.com/1.png' + url: 'http://example.com/1.png', + zIndex: 0 }); var equalLiteral = new ol.style.IconLiteral({ height: 10, width: 20, opacity: 1, rotation: 0.1, - url: 'http://example.com/1.png' + url: 'http://example.com/1.png', + zIndex: 0 }); - var differentLiteral1 = new ol.style.IconLiteral({ + var differentHeight = new ol.style.IconLiteral({ height: 11, width: 20, opacity: 1, rotation: 0.1, - url: 'http://example.com/1.png' + url: 'http://example.com/1.png', + zIndex: 0 }); - var differentLiteral2 = new ol.style.IconLiteral({ + var differentWidth = new ol.style.IconLiteral({ height: 10, width: 2, opacity: 1, rotation: 0.1, - url: 'http://example.com/1.png' + url: 'http://example.com/1.png', + zIndex: 0 }); - var differentLiteral3 = new ol.style.IconLiteral({ + var differentOpacity = new ol.style.IconLiteral({ height: 10, width: 20, opacity: 0.5, rotation: 0.1, - url: 'http://example.com/1.png' + url: 'http://example.com/1.png', + zIndex: 0 }); - var differentLiteral4 = new ol.style.IconLiteral({ + var differentRotation = new ol.style.IconLiteral({ height: 10, width: 20, opacity: 1, rotation: 0.2, - url: 'http://example.com/1.png' + url: 'http://example.com/1.png', + zIndex: 0 }); - var differentLiteral5 = new ol.style.IconLiteral({ + var differentUrl = new ol.style.IconLiteral({ height: 10, width: 20, opacity: 1, rotation: 0.1, - url: 'http://example.com/2.png' + url: 'http://example.com/2.png', + zIndex: 0 }); var differentZIndex = new ol.style.IconLiteral({ height: 10, @@ -63,11 +70,11 @@ describe('ol.style.IconLiteral', function() { zIndex: 20 }); expect(literal.equals(equalLiteral)).to.be(true); - expect(literal.equals(differentLiteral1)).to.be(false); - expect(literal.equals(differentLiteral2)).to.be(false); - expect(literal.equals(differentLiteral3)).to.be(false); - expect(literal.equals(differentLiteral4)).to.be(false); - expect(literal.equals(differentLiteral5)).to.be(false); + expect(literal.equals(differentHeight)).to.be(false); + expect(literal.equals(differentWidth)).to.be(false); + expect(literal.equals(differentOpacity)).to.be(false); + expect(literal.equals(differentRotation)).to.be(false); + expect(literal.equals(differentUrl)).to.be(false); expect(literal.equals(differentZIndex)).to.be(false); }); diff --git a/test/spec/ol/style/iconsymbolizer.test.js b/test/spec/ol/style/iconsymbolizer.test.js index a0d712b79b..0f0a736f7d 100644 --- a/test/spec/ol/style/iconsymbolizer.test.js +++ b/test/spec/ol/style/iconsymbolizer.test.js @@ -77,7 +77,7 @@ describe('ol.style.Icon', function() { expect(literal.xOffset).to.be(20); expect(literal.yOffset).to.be(30); expect(literal.url).to.be('http://example.com/1.png'); - expect(literal.zIndex).to.be(undefined); + expect(literal.zIndex).to.be(0); }); it('can be called without a feature', function() { @@ -250,6 +250,35 @@ describe('ol.style.Icon', function() { expect(literal.zIndex).to.be(4); }); + it('applies default zIndex if none', function() { + var symbolizer = new ol.style.Icon({ + height: 10, + width: 20, + url: 'http://example.com/1.png' + }); + + var literal = symbolizer.createLiteral(ol.geom.GeometryType.POINT); + expect(literal).to.be.a(ol.style.IconLiteral); + expect(literal.zIndex).to.be(0); + }); + + it('casts zIndex to number', function() { + var symbolizer = new ol.style.Icon({ + zIndex: ol.expr.parse('zIndex'), + width: 10, + url: 'http://example.com/1.png' + }); + + var feature = new ol.Feature({ + zIndex: '42', + geometry: new ol.geom.Point([1, 2]) + }); + + var literal = symbolizer.createLiteral(feature); + expect(literal).to.be.a(ol.style.IconLiteral); + expect(literal.zIndex).to.be(42); + }); + }); describe('#getHeight()', function() { diff --git a/test/spec/ol/style/lineliteral.test.js b/test/spec/ol/style/lineliteral.test.js index 19349064bc..323c5e17af 100644 --- a/test/spec/ol/style/lineliteral.test.js +++ b/test/spec/ol/style/lineliteral.test.js @@ -8,27 +8,32 @@ describe('ol.style.LineLiteral', function() { var literal = new ol.style.LineLiteral({ width: 3, color: '#BADA55', - opacity: 1 + opacity: 1, + zIndex: 0 }); var equalLiteral = new ol.style.LineLiteral({ color: '#BADA55', width: 3, - opacity: 1 + opacity: 1, + zIndex: 0 }); var differentColor = new ol.style.LineLiteral({ width: 3, color: '#ff0000', - opacity: 1 + opacity: 1, + zIndex: 0 }); var differentWidth = new ol.style.LineLiteral({ width: 3.5, color: '#BADA55', - opacity: 1 + opacity: 1, + zIndex: 0 }); var differentOpacity = new ol.style.LineLiteral({ width: 3, color: '#BADA55', - opacity: 0.5 + opacity: 0.5, + zIndex: 0 }); var differentZIndex = new ol.style.LineLiteral({ width: 3, diff --git a/test/spec/ol/style/polygonliteral.test.js b/test/spec/ol/style/polygonliteral.test.js index 4471ed4db6..642af45f48 100644 --- a/test/spec/ol/style/polygonliteral.test.js +++ b/test/spec/ol/style/polygonliteral.test.js @@ -10,49 +10,56 @@ describe('ol.style.PolygonLiteral', function() { strokeColor: '#013', strokeOpacity: 0.4, fillColor: '#BADA55', - fillOpacity: 0.3 + fillOpacity: 0.3, + zIndex: 0 }); var equalLiteral = new ol.style.PolygonLiteral({ strokeWidth: 3, strokeColor: '#013', strokeOpacity: 0.4, fillColor: '#BADA55', - fillOpacity: 0.3 + fillOpacity: 0.3, + zIndex: 0 }); var differentStrokeWidth = new ol.style.PolygonLiteral({ strokeWidth: 5, strokeColor: '#013', strokeOpacity: 0.4, fillColor: '#BADA55', - fillOpacity: 0.3 + fillOpacity: 0.3, + zIndex: 0 }); var differentStrokeColor = new ol.style.PolygonLiteral({ strokeWidth: 3, strokeColor: '#ffff00', strokeOpacity: 0.4, fillColor: '#BADA55', - fillOpacity: 0.3 + fillOpacity: 0.3, + zIndex: 0 }); var differentStrokeOpacity = new ol.style.PolygonLiteral({ strokeWidth: 3, strokeColor: '#013', strokeOpacity: 0.41, fillColor: '#BADA55', - fillOpacity: 0.3 + fillOpacity: 0.3, + zIndex: 0 }); var differentFillColor = new ol.style.PolygonLiteral({ strokeWidth: 3, strokeColor: '#013', strokeOpacity: 0.4, fillColor: '#00ffff', - fillOpacity: 0.3 + fillOpacity: 0.3, + zIndex: 0 }); var differentFillOpacity = new ol.style.PolygonLiteral({ strokeWidth: 3, strokeColor: '#013', strokeOpacity: 0.4, fillColor: '#BADA55', - fillOpacity: 0.31 + fillOpacity: 0.31, + zIndex: 0 }); var differentZIndex = new ol.style.PolygonLiteral({ strokeWidth: 3, diff --git a/test/spec/ol/style/shapeliteral.test.js b/test/spec/ol/style/shapeliteral.test.js index 68768be103..f5af82b807 100644 --- a/test/spec/ol/style/shapeliteral.test.js +++ b/test/spec/ol/style/shapeliteral.test.js @@ -12,7 +12,8 @@ describe('ol.style.ShapeLiteral', function() { fillOpacity: 0.9, strokeColor: '#013', strokeOpacity: 0.8, - strokeWidth: 3 + strokeWidth: 3, + zIndex: 0 }); var equalLiteral = new ol.style.ShapeLiteral({ type: ol.style.ShapeType.CIRCLE, @@ -21,7 +22,8 @@ describe('ol.style.ShapeLiteral', function() { fillOpacity: 0.9, strokeColor: '#013', strokeOpacity: 0.8, - strokeWidth: 3 + strokeWidth: 3, + zIndex: 0 }); var differentSize = new ol.style.ShapeLiteral({ type: ol.style.ShapeType.CIRCLE, @@ -30,7 +32,8 @@ describe('ol.style.ShapeLiteral', function() { fillOpacity: 0.9, strokeColor: '#013', strokeOpacity: 0.8, - strokeWidth: 3 + strokeWidth: 3, + zIndex: 0 }); var differentFillColor = new ol.style.ShapeLiteral({ type: ol.style.ShapeType.CIRCLE, @@ -39,7 +42,8 @@ describe('ol.style.ShapeLiteral', function() { fillOpacity: 0.9, strokeColor: '#013', strokeOpacity: 0.8, - strokeWidth: 3 + strokeWidth: 3, + zIndex: 0 }); var differentFillOpacity = new ol.style.ShapeLiteral({ type: ol.style.ShapeType.CIRCLE, @@ -48,7 +52,8 @@ describe('ol.style.ShapeLiteral', function() { fillOpacity: 0.8, strokeColor: '#013', strokeOpacity: 0.8, - strokeWidth: 3 + strokeWidth: 3, + zIndex: 0 }); var differentStrokeColor = new ol.style.ShapeLiteral({ type: ol.style.ShapeType.CIRCLE, @@ -57,7 +62,8 @@ describe('ol.style.ShapeLiteral', function() { fillOpacity: 0.9, strokeColor: '#ffffff', strokeOpacity: 0.8, - strokeWidth: 3 + strokeWidth: 3, + zIndex: 0 }); var differentStrokeOpacity = new ol.style.ShapeLiteral({ type: ol.style.ShapeType.CIRCLE, @@ -66,7 +72,8 @@ describe('ol.style.ShapeLiteral', function() { fillOpacity: 0.9, strokeColor: '#013', strokeOpacity: 0.7, - strokeWidth: 3 + strokeWidth: 3, + zIndex: 0 }); var differentStrokeWidth = new ol.style.ShapeLiteral({ type: ol.style.ShapeType.CIRCLE, @@ -75,7 +82,8 @@ describe('ol.style.ShapeLiteral', function() { fillOpacity: 0.9, strokeColor: '#013', strokeOpacity: 0.8, - strokeWidth: 4 + strokeWidth: 4, + zIndex: 0 }); var differentZIndex = new ol.style.ShapeLiteral({ type: ol.style.ShapeType.CIRCLE, diff --git a/test/spec/ol/style/shapesymbolizer.test.js b/test/spec/ol/style/shapesymbolizer.test.js index 7b4bbce3ee..d6c1b56450 100644 --- a/test/spec/ol/style/shapesymbolizer.test.js +++ b/test/spec/ol/style/shapesymbolizer.test.js @@ -58,7 +58,7 @@ describe('ol.style.Shape', function() { expect(literal).to.be.a(ol.style.ShapeLiteral); expect(literal.size).to.be(42); expect(literal.fillOpacity).to.be(0.4); - expect(literal.zIndex).to.be(undefined); + expect(literal.zIndex).to.be(0); }); it('can be called without a feature', function() { @@ -185,6 +185,24 @@ describe('ol.style.Shape', function() { expect(literal.zIndex).to.be(-2); }); + it('casts zIndex to number', function() { + var symbolizer = new ol.style.Shape({ + fill: new ol.style.Fill({ + color: '#BADA55' + }), + zIndex: ol.expr.parse('zIndex') + }); + + var feature = new ol.Feature({ + zIndex: '42', + geometry: new ol.geom.Point([1, 2]) + }); + + var literal = symbolizer.createLiteral(feature); + expect(literal).to.be.a(ol.style.ShapeLiteral); + expect(literal.zIndex).to.be(42); + }); + }); describe('#getFill()', function() { diff --git a/test/spec/ol/style/strokesymbolizer.test.js b/test/spec/ol/style/strokesymbolizer.test.js index 4d28fdfc69..bd4890fe8c 100644 --- a/test/spec/ol/style/strokesymbolizer.test.js +++ b/test/spec/ol/style/strokesymbolizer.test.js @@ -49,7 +49,7 @@ describe('ol.style.Stroke', function() { expect(literal).to.be.a(ol.style.LineLiteral); expect(literal.opacity).to.be(42 / 100); expect(literal.width).to.be(1.5); - expect(literal.zIndex).to.be(undefined); + expect(literal.zIndex).to.be(0); }); it('applies the default values', function() { @@ -60,6 +60,7 @@ describe('ol.style.Stroke', function() { expect(literal.color).to.be('#696969'); expect(literal.opacity).to.be(0.75); expect(literal.width).to.be(1.5); + expect(literal.zIndex).to.be(0); }); }); diff --git a/test/spec/ol/style/style.test.js b/test/spec/ol/style/style.test.js index 18fdb5e8c8..5bc1314f36 100644 --- a/test/spec/ol/style/style.test.js +++ b/test/spec/ol/style/style.test.js @@ -194,12 +194,14 @@ describe('ol.style.Style', function() { var literals = [ new ol.style.PolygonLiteral({ fillColor: '#ff0000', - fillOpacity: 0.5 + fillOpacity: 0.5, + zIndex: 0 }), new ol.style.PolygonLiteral({ strokeColor: '#00ff00', strokeOpacity: 0.6, - strokeWidth: 3 + strokeWidth: 3, + zIndex: 0 }) ]; @@ -221,12 +223,14 @@ describe('ol.style.Style', function() { fillOpacity: 0.5, strokeColor: '#00ff00', strokeOpacity: 0.6, - strokeWidth: 3 + strokeWidth: 3, + zIndex: 0 }), new ol.style.PolygonLiteral({ strokeColor: '#0000ff', strokeOpacity: 0.7, - strokeWidth: 1 + strokeWidth: 1, + zIndex: 0 }) ]; @@ -253,18 +257,21 @@ describe('ol.style.Style', function() { new ol.style.PolygonLiteral({ strokeColor: '#00ff00', strokeOpacity: 0.6, - strokeWidth: 3 + strokeWidth: 3, + zIndex: 0 }), new ol.style.PolygonLiteral({ fillColor: '#ff0000', - fillOpacity: 0.5 + fillOpacity: 0.5, + zIndex: 0 }), new ol.style.TextLiteral({ color: '#ffffff', fontFamily: 'Arial', fontSize: 11, text: 'Test', - opacity: 0.5 + opacity: 0.5, + zIndex: 0 }) ]; diff --git a/test/spec/ol/style/textliteral.test.js b/test/spec/ol/style/textliteral.test.js index 8a4d3010c4..b3b945675a 100644 --- a/test/spec/ol/style/textliteral.test.js +++ b/test/spec/ol/style/textliteral.test.js @@ -10,49 +10,56 @@ describe('ol.style.TextLiteral', function() { fontFamily: 'Arial', fontSize: 11, text: 'Test', - opacity: 0.5 + opacity: 0.5, + zIndex: 0 }); var equalLiteral = new ol.style.TextLiteral({ color: '#ff0000', fontFamily: 'Arial', fontSize: 11, text: 'Test', - opacity: 0.5 + opacity: 0.5, + zIndex: 0 }); - var differentLiteral1 = new ol.style.TextLiteral({ + var differentColor = new ol.style.TextLiteral({ color: '#0000ff', fontFamily: 'Arial', fontSize: 11, text: 'Test', - opacity: 0.5 + opacity: 0.5, + zIndex: 0 }); - var differentLiteral2 = new ol.style.TextLiteral({ + var differentFontFamily = new ol.style.TextLiteral({ color: '#ff0000', fontFamily: 'Dingbats', fontSize: 11, text: 'Test', - opacity: 0.5 + opacity: 0.5, + zIndex: 0 }); - var differentLiteral3 = new ol.style.TextLiteral({ + var differentFontSize = new ol.style.TextLiteral({ color: '#ff0000', fontFamily: 'Arial', fontSize: 12, text: 'Test', - opacity: 0.5 + opacity: 0.5, + zIndex: 0 }); - var differentLiteral4 = new ol.style.TextLiteral({ + var differentOpacity = new ol.style.TextLiteral({ color: '#ff0000', fontFamily: 'Arial', fontSize: 11, text: 'Test', - opacity: 0.6 + opacity: 0.6, + zIndex: 0 }); var equalLiteral2 = new ol.style.TextLiteral({ color: '#ff0000', fontFamily: 'Arial', fontSize: 11, text: 'Text is not compared for equality', - opacity: 0.5 + opacity: 0.5, + zIndex: 0 }); var differentZIndex = new ol.style.TextLiteral({ color: '#ff0000', @@ -63,10 +70,10 @@ describe('ol.style.TextLiteral', function() { zIndex: 3 }); expect(literal.equals(equalLiteral)).to.be(true); - expect(literal.equals(differentLiteral1)).to.be(false); - expect(literal.equals(differentLiteral2)).to.be(false); - expect(literal.equals(differentLiteral3)).to.be(false); - expect(literal.equals(differentLiteral4)).to.be(false); + expect(literal.equals(differentColor)).to.be(false); + expect(literal.equals(differentFontFamily)).to.be(false); + expect(literal.equals(differentFontSize)).to.be(false); + expect(literal.equals(differentOpacity)).to.be(false); expect(literal.equals(equalLiteral2)).to.be(true); expect(literal.equals(differentZIndex)).to.be(false); });