From df51e55781efaa1fd2beca9c93fe9f409d152526 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 7 Jan 2015 16:48:15 +0100 Subject: [PATCH] Assert that ol.layer.Tile#getPreload is always set --- src/ol/layer/tilelayer.js | 9 +++++--- src/ol/renderer/layerrenderer.js | 6 +---- test/spec/ol/layer/tilelayer.test.js | 33 ++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 test/spec/ol/layer/tilelayer.test.js diff --git a/src/ol/layer/tilelayer.js b/src/ol/layer/tilelayer.js index 9aa70cf5ab..1ba0f6d1fa 100644 --- a/src/ol/layer/tilelayer.js +++ b/src/ol/layer/tilelayer.js @@ -30,18 +30,21 @@ ol.layer.TileProperty = { ol.layer.Tile = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this, /** @type {olx.layer.LayerOptions} */ (options)); + + if (!goog.isDef(this.getPreload())) { + this.setPreload(0); + } }; goog.inherits(ol.layer.Tile, ol.layer.Layer); /** - * @return {number|undefined} The level to preload tiles up to. + * @return {number} The level to preload tiles up to. * @observable * @api */ ol.layer.Tile.prototype.getPreload = function() { - return /** @type {number|undefined} */ ( - this.get(ol.layer.TileProperty.PRELOAD)); + return /** @type {number} */ (this.get(ol.layer.TileProperty.PRELOAD)); }; goog.exportProperty( ol.layer.Tile.prototype, diff --git a/src/ol/renderer/layerrenderer.js b/src/ol/renderer/layerrenderer.js index 356561bb0f..14a64db3cb 100644 --- a/src/ol/renderer/layerrenderer.js +++ b/src/ol/renderer/layerrenderer.js @@ -246,8 +246,7 @@ ol.renderer.Layer.prototype.snapCenterToPixel = * @param {ol.proj.Projection} projection Projection. * @param {ol.Extent} extent Extent. * @param {number} currentZ Current Z. - * @param {number|undefined} preload Load low resolution tiles up to 'preload' - * levels. + * @param {number} preload Load low resolution tiles up to 'preload' levels. * @param {function(this: T, ol.Tile)=} opt_tileCallback Tile callback. * @param {T=} opt_this Object to use as `this` in `opt_tileCallback`. * @protected @@ -264,9 +263,6 @@ ol.renderer.Layer.prototype.manageTilePyramid = function( var tileQueue = frameState.tileQueue; var minZoom = tileGrid.getMinZoom(); var tile, tileRange, tileResolution, x, y, z; - if (!goog.isDef(preload)) { - preload = 0; - } for (z = currentZ; z >= minZoom; --z) { tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z, tileRange); tileResolution = tileGrid.getResolution(z); diff --git a/test/spec/ol/layer/tilelayer.test.js b/test/spec/ol/layer/tilelayer.test.js new file mode 100644 index 0000000000..7297efa809 --- /dev/null +++ b/test/spec/ol/layer/tilelayer.test.js @@ -0,0 +1,33 @@ +goog.provide('ol.test.layer.Tile'); + +describe('ol.layer.Tile', function() { + + describe('constructor (defaults)', function() { + + var layer; + + beforeEach(function() { + layer = new ol.layer.Tile({ + source: new ol.source.OSM() + }); + }); + + afterEach(function() { + goog.dispose(layer); + }); + + it('creates an instance', function() { + expect(layer).to.be.a(ol.layer.Tile); + }); + + it('provides default preload', function() { + expect(layer.getPreload()).to.be(0); + }); + + }); + +}); + +goog.require('goog.dispose'); +goog.require('ol.layer.Tile'); +goog.require('ol.source.OSM');