Files
openlayers/test/spec/ol/tileurlfunction.test.js
Tim Schaub 7f47883c48 Transformed
2017-12-12 06:53:18 -07:00

130 lines
4.6 KiB
JavaScript

import _ol_TileUrlFunction_ from '../../../src/ol/TileUrlFunction.js';
import _ol_tilecoord_ from '../../../src/ol/tilecoord.js';
import _ol_tilegrid_ from '../../../src/ol/tilegrid.js';
import _ol_tilegrid_TileGrid_ from '../../../src/ol/tilegrid/TileGrid.js';
describe('ol.TileUrlFunction', function() {
describe('expandUrl', function() {
describe('with number range', function() {
it('creates expected URLs', function() {
var template = 'http://tile-{1-3}/{z}/{x}/{y}';
var urls = _ol_TileUrlFunction_.expandUrl(template);
expect(urls).to.eql([
'http://tile-1/{z}/{x}/{y}',
'http://tile-2/{z}/{x}/{y}',
'http://tile-3/{z}/{x}/{y}'
]);
});
it('creates expected URLs', function() {
var template = 'http://tile-{9-11}/{z}/{x}/{y}';
var urls = _ol_TileUrlFunction_.expandUrl(template);
expect(urls).to.eql([
'http://tile-9/{z}/{x}/{y}',
'http://tile-10/{z}/{x}/{y}',
'http://tile-11/{z}/{x}/{y}'
]);
});
});
describe('with character range', function() {
it('creates expected URLs', function() {
var template = 'http://tile-{c-e}/{z}/{x}/{y}';
var urls = _ol_TileUrlFunction_.expandUrl(template);
expect(urls).to.eql([
'http://tile-c/{z}/{x}/{y}',
'http://tile-d/{z}/{x}/{y}',
'http://tile-e/{z}/{x}/{y}'
]);
});
});
describe('without range', function() {
it('creates expected URLs', function() {
var template = 'http://tiles.example.com/{z}/{x}/{y}';
var urls = _ol_TileUrlFunction_.expandUrl(template);
expect(urls).to.eql([
'http://tiles.example.com/{z}/{x}/{y}'
]);
});
});
});
describe('createFromTemplate', function() {
var tileGrid = _ol_tilegrid_.createXYZ();
it('creates expected URL', function() {
var tileUrl = _ol_TileUrlFunction_.createFromTemplate(
'{z}/{x}/{y}', tileGrid);
expect(tileUrl([3, 2, -2])).to.eql('3/2/1');
expect(tileUrl(null)).to.be(undefined);
});
it('accepts {-y} placeholder', function() {
var tileUrl = _ol_TileUrlFunction_.createFromTemplate(
'{z}/{x}/{-y}', tileGrid);
expect(tileUrl([3, 2, -3])).to.eql('3/2/5');
});
it('returns correct value for {-y} with custom tile grids', function() {
var customTileGrid = new _ol_tilegrid_TileGrid_({
extent: [-180, -90, 180, 90],
origin: [-180, -90],
resolutions: [360 / 256, 360 / 512, 360 / 1024, 360 / 2048]
});
var tileUrl = _ol_TileUrlFunction_.createFromTemplate(
'{z}/{x}/{-y}', customTileGrid);
expect(tileUrl([3, 2, -3])).to.eql('3/2/1');
});
it('replaces multiple placeholder occurrences', function() {
var tileUrl = _ol_TileUrlFunction_.createFromTemplate(
'{z}/{z}{x}{y}', tileGrid);
expect(tileUrl([3, 2, -2])).to.eql('3/321');
});
});
describe('createFromTemplates', function() {
var tileGrid = _ol_tilegrid_.createXYZ();
it('creates expected URL', function() {
var templates = [
'http://tile-1/{z}/{x}/{y}',
'http://tile-2/{z}/{x}/{y}',
'http://tile-3/{z}/{x}/{y}'
];
var tileUrlFunction = _ol_TileUrlFunction_.createFromTemplates(
templates, tileGrid);
var tileCoord = [3, 2, -2];
/* eslint-disable openlayers-internal/no-missing-requires */
sinon.stub(_ol_tilecoord_, 'hash').callsFake(function() {
return 3;
});
expect(tileUrlFunction(tileCoord)).to.eql('http://tile-1/3/2/1');
_ol_tilecoord_.hash.restore();
sinon.stub(_ol_tilecoord_, 'hash').callsFake(function() {
return 2;
});
expect(tileUrlFunction(tileCoord)).to.eql('http://tile-3/3/2/1');
_ol_tilecoord_.hash.restore();
sinon.stub(_ol_tilecoord_, 'hash').callsFake(function() {
return 1;
});
expect(tileUrlFunction(tileCoord)).to.eql('http://tile-2/3/2/1');
_ol_tilecoord_.hash.restore();
/* eslint-enable */
});
});
describe('createFromTileUrlFunctions', function() {
var tileGrid = _ol_tilegrid_.createXYZ();
it('creates expected URL', function() {
var tileUrl = _ol_TileUrlFunction_.createFromTileUrlFunctions([
_ol_TileUrlFunction_.createFromTemplate('a', tileGrid),
_ol_TileUrlFunction_.createFromTemplate('b', tileGrid)
]);
var tileUrl1 = tileUrl([1, 0, 0]);
var tileUrl2 = tileUrl([1, 0, 1]);
expect(tileUrl1).not.to.be(tileUrl2);
expect(tileUrl(null)).to.be(undefined);
});
});
});