From bbfcf42daff3cc31c037272428c1c4cc6bd43f43 Mon Sep 17 00:00:00 2001 From: mike-000 <49240900+mike-000@users.noreply.github.com> Date: Sat, 28 May 2022 11:43:46 +0100 Subject: [PATCH] Test tile pyramid getData() --- test/browser/spec/ol/layer/WebGLTile.test.js | 57 ++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/test/browser/spec/ol/layer/WebGLTile.test.js b/test/browser/spec/ol/layer/WebGLTile.test.js index bd4b8832ab..8577aa8856 100644 --- a/test/browser/spec/ol/layer/WebGLTile.test.js +++ b/test/browser/spec/ol/layer/WebGLTile.test.js @@ -8,6 +8,7 @@ import {createCanvasContext2D} from '../../../../../src/ol/dom.js'; import {createXYZ} from '../../../../../src/ol/tilegrid.js'; import {getForViewAndSize} from '../../../../../src/ol/extent.js'; import {getRenderPixel} from '../../../../../src/ol/render.js'; +import {sourcesFromTileGrid} from '../../../../../src/ol/source.js'; describe('ol/layer/WebGLTile', function () { /** @type {WebGLTileLayer} */ @@ -105,6 +106,62 @@ describe('ol/layer/WebGLTile', function () { }); }); + it('retrieves pixel data from pyramid', (done) => { + const pyramidGrid = createXYZ({minZoom: 1, maxZoom: 1}); + const layer = new WebGLTileLayer({ + sources: sourcesFromTileGrid( + pyramidGrid, + ([z1, x1, y1]) => + new DataTileSource({ + tileSize: 1, + tileGrid: createXYZ({ + extent: pyramidGrid.getTileCoordExtent([z1, x1, y1]), + minZoom: 1, + maxZoom: 1, + }), + loader(z2, x2, y2) { + return new Uint8Array([x1, y1, x2, y2]); + }, + }) + ), + }); + + map.addLayer(layer); + + map.once('rendercomplete', () => { + let data; + data = layer.getData([25, 25]); + expect(data).to.be.a(Uint8Array); + expect(data.length).to.be(4); + expect(data[0]).to.be(0); + expect(data[1]).to.be(0); + expect(data[2]).to.be(1); + expect(data[3]).to.be(1); + data = layer.getData([75, 25]); + expect(data).to.be.a(Uint8Array); + expect(data.length).to.be(4); + expect(data[0]).to.be(1); + expect(data[1]).to.be(0); + expect(data[2]).to.be(0); + expect(data[3]).to.be(1); + data = layer.getData([25, 75]); + expect(data).to.be.a(Uint8Array); + expect(data.length).to.be(4); + expect(data[0]).to.be(0); + expect(data[1]).to.be(1); + expect(data[2]).to.be(1); + expect(data[3]).to.be(0); + data = layer.getData([75, 75]); + expect(data).to.be.a(Uint8Array); + expect(data.length).to.be(4); + expect(data[0]).to.be(1); + expect(data[1]).to.be(1); + expect(data[2]).to.be(0); + expect(data[3]).to.be(0); + done(); + }); + }); + it('preserves the original data type', (done) => { const layer = new WebGLTileLayer({ source: new DataTileSource({