Files
openlayers/test/browser/spec/ol/source/datatile.test.js
Andreas Hocevar 814d70b1cc Add more tests
2021-08-18 17:54:48 +02:00

43 lines
1.3 KiB
JavaScript

import DataTile from '../../../../../src/ol/DataTile.js';
import DataTileSource from '../../../../../src/ol/source/DataTile.js';
import TileState from '../../../../../src/ol/TileState.js';
describe('ol.source.DataTile', function () {
/** @type {DataTileSource} */
let source;
beforeEach(function () {
const loader = function (z, x, y) {
return new Promise((resolve) => {
const canvas = document.createElement('canvas');
canvas.width = 256;
canvas.height = 256;
const context = canvas.getContext('2d');
// encode tile coordinate in rgb
context.fillStyle = `rgb(${z}, ${x % 255}, ${y % 255})`;
context.fillRect(0, 0, 256, 256);
resolve(context.getImageData(0, 0, 256, 256).data);
});
};
source = new DataTileSource({
loader: loader,
});
});
describe('#getTile()', function () {
it('gets tiles and fires a tileloadend event', function (done) {
const tile = source.getTile(3, 2, 1);
expect(tile).to.be.a(DataTile);
expect(tile.state).to.be(TileState.IDLE);
source.on('tileloadend', () => {
expect(tile.state).to.be(TileState.LOADED);
// decode tile coordinate from rgb
expect(Array.from(tile.getData().slice(0, 3))).to.eql([3, 2, 1]);
done();
});
tile.load();
});
});
});