diff --git a/test/spec/ol/data/dot.png b/test/spec/ol/data/dot.png new file mode 100644 index 0000000000..d533783017 Binary files /dev/null and b/test/spec/ol/data/dot.png differ diff --git a/test/spec/ol/renderer/canvas/imagelayer.test.js b/test/spec/ol/renderer/canvas/imagelayer.test.js new file mode 100644 index 0000000000..943fe7f609 --- /dev/null +++ b/test/spec/ol/renderer/canvas/imagelayer.test.js @@ -0,0 +1,65 @@ +goog.require('ol.Map'); +goog.require('ol.View'); +goog.require('ol.layer.Image'); +goog.require('ol.proj.Projection'); +goog.require('ol.source.ImageStatic'); + + +describe('ol.renderer.canvas.ImageLayer', function() { + + describe('#forEachLayerAtCoordinate', function() { + + var map, target, source; + beforeEach(function(done) { + var projection = new ol.proj.Projection({ + code: 'custom-image', + units: 'pixels', + extent: [0, 0, 200, 200] + }); + target = document.createElement('div'); + target.style.width = '100px'; + target.style.height = '100px'; + document.body.appendChild(target); + source = new ol.source.ImageStatic({ + url: 'spec/ol/data/dot.png', + projection: projection, + imageExtent: [0, 0, 20, 20] + }); + map = new ol.Map({ + pixelRatio: 1, + target: target, + layers: [new ol.layer.Image({ + source: source + })], + view: new ol.View({ + projection: projection, + center: [10, 10], + zoom: 2, + maxZoom: 8 + }) + }); + source.on('imageloadend', function() { + done(); + }); + }); + + afterEach(function() { + map.setTarget(null); + document.body.removeChild(target); + }); + + it('properly detects pixels', function() { + map.renderSync(); + var has = false; + function hasLayer() { + has = true; + } + map.forEachLayerAtPixel([20, 80], hasLayer); + expect(has).to.be(true); + has = false; + map.forEachLayerAtPixel([10, 90], hasLayer); + expect(has).to.be(false); + }); + }); + +});