Files
openlayers/test/spec/ol/tileurlfunction.test.js
Éric Lemoine e128bab625 Do not pass tile grid to getTile and tileUrlFunc
getTile and the tileUrlFunc are functions of the source, so they do need to be passed the tile grid. The tile source knows its tile grid, and can get the projection's tile grid if it doesn't have a tile grid.
2013-04-02 11:12:43 +02:00

105 lines
3.7 KiB
JavaScript

goog.provide('ol.test.TileUrlFunction');
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}'
]);
});
});
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('createFromTemplate', function() {
it('creates expected URL', function() {
var tileUrl = ol.TileUrlFunction.createFromTemplate('{z}/{x}/{y}');
expect(tileUrl(new ol.TileCoord(3, 2, 1))).to.eql('3/2/1');
expect(tileUrl(null)).to.be(undefined);
});
});
describe('createFromTemplates', function() {
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);
var tileCoord = new ol.TileCoord(3, 2, 1);
tileCoord.hash = function() { return 3; };
expect(tileUrlFunction(tileCoord)).to.eql('http://tile-1/3/2/1');
tileCoord.hash = function() { return 2; };
expect(tileUrlFunction(tileCoord)).to.eql('http://tile-3/3/2/1');
tileCoord.hash = function() { return 1; };
expect(tileUrlFunction(tileCoord)).to.eql('http://tile-2/3/2/1');
});
});
describe('withTileCoordTransform', function() {
it('creates expected URL', function() {
var tileUrl = ol.TileUrlFunction.withTileCoordTransform(
function(tileCoord) {
return new ol.TileCoord(tileCoord.z, tileCoord.x, -tileCoord.y);
},
ol.TileUrlFunction.createFromTemplate('{z}/{x}/{y}'));
expect(tileUrl(new ol.TileCoord(3, 2, -1))).to.eql('3/2/1');
expect(tileUrl(null)).to.be(undefined);
});
});
describe('createFromTileUrlFunctions', function() {
it('creates expected URL', function() {
var tileUrl = ol.TileUrlFunction.createFromTileUrlFunctions([
ol.TileUrlFunction.createFromTemplate('a'),
ol.TileUrlFunction.createFromTemplate('b')
]);
var tileUrl1 = tileUrl(new ol.TileCoord(1, 0, 0));
var tileUrl2 = tileUrl(new ol.TileCoord(1, 0, 1));
expect(tileUrl1).not.to.eql(tileUrl2);
expect(tileUrl(null)).to.be(undefined);
});
});
describe('createFromParamsFunction', function() {
var paramsFunction = function(url, params) { return arguments; };
var projection = ol.projection.get('EPSG:3857');
var fakeTileSource = {getTileGrid: function() {return null;}};
var params = {foo: 'bar'};
var tileUrlFunction = ol.TileUrlFunction.createFromParamsFunction(
'url', params, paramsFunction);
it('calls the passed function with the correct arguments', function() {
var args = tileUrlFunction.call(fakeTileSource,
new ol.TileCoord(0, 0, 0), projection);
expect(args[0]).to.eql('url');
expect(args[1]).to.be(params);
expect(args[2]).to.eql(projection.getExtent());
expect(args[3]).to.eql(new ol.Size(256, 256));
expect(args[4]).to.eql(projection);
});
});
});
goog.require('ol.Size');
goog.require('ol.TileCoord');
goog.require('ol.TileUrlFunction');
goog.require('ol.projection');