The addition of full extent tile ranges also allows us to simplify wrapX handling for tile layers. By limiting wrapX to true and false as possible values, we can remove a lot of guessing logic.
125 lines
4.0 KiB
JavaScript
125 lines
4.0 KiB
JavaScript
goog.provide('ol.test.TileCoord');
|
|
|
|
describe('ol.TileCoord', function() {
|
|
|
|
describe('create', function() {
|
|
it('sets x y z properties as expected', function() {
|
|
var tileCoord = [1, 2, 3];
|
|
expect(tileCoord[0]).to.eql(1);
|
|
expect(tileCoord[1]).to.eql(2);
|
|
expect(tileCoord[2]).to.eql(3);
|
|
});
|
|
});
|
|
|
|
describe('create from quad key', function() {
|
|
it('sets x y z properties as expected', function() {
|
|
var tileCoord = ol.tilecoord.createFromQuadKey('213');
|
|
expect(tileCoord[0]).to.eql(3);
|
|
expect(tileCoord[1]).to.eql(3);
|
|
expect(tileCoord[2]).to.eql(5);
|
|
});
|
|
});
|
|
|
|
describe('create from string', function() {
|
|
it('sets x y z properties as expected', function() {
|
|
var str = '1/2/3';
|
|
var tileCoord = ol.tilecoord.createFromString(str);
|
|
expect(tileCoord[0]).to.eql(1);
|
|
expect(tileCoord[1]).to.eql(2);
|
|
expect(tileCoord[2]).to.eql(3);
|
|
});
|
|
});
|
|
|
|
describe('call quadKey', function() {
|
|
it('returns expected string', function() {
|
|
var tileCoord = [3, 3, 5];
|
|
var s = ol.tilecoord.quadKey(tileCoord);
|
|
expect(s).to.eql('213');
|
|
});
|
|
});
|
|
|
|
describe('hash', function() {
|
|
it('produces different hashes for different tile coords', function() {
|
|
var tileCoord1 = [3, 2, 1];
|
|
var tileCoord2 = [3, 1, 1];
|
|
expect(ol.tilecoord.hash(tileCoord1)).not.to.eql(
|
|
ol.tilecoord.hash(tileCoord2));
|
|
});
|
|
});
|
|
|
|
describe('restrictByExtentAndZ', function() {
|
|
|
|
it('restricts by z', function() {
|
|
var tileGrid = new ol.tilegrid.TileGrid({
|
|
extent: [10, 20, 30, 40],
|
|
tileSize: 10,
|
|
resolutions: [2, 1],
|
|
minZoom: 1
|
|
});
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 0, 0], tileGrid))
|
|
.to.equal(null);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([1, 0, 0], tileGrid))
|
|
.to.eql([1, 0, 0]);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([2, 0, 0], tileGrid))
|
|
.to.equal(null);
|
|
});
|
|
|
|
it('restricts by extent when extent defines tile ranges', function() {
|
|
var tileGrid = new ol.tilegrid.TileGrid({
|
|
extent: [10, 20, 30, 40],
|
|
sizes: [[3, 3]],
|
|
tileSize: 10,
|
|
resolutions: [1]
|
|
});
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 1, 1], tileGrid))
|
|
.to.eql([0, 1, 1]);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 2, 0], tileGrid))
|
|
.to.equal(null);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 0, 2], tileGrid))
|
|
.to.equal(null);
|
|
});
|
|
|
|
it('restricts by extent when sizes define tile ranges', function() {
|
|
var tileGrid = new ol.tilegrid.TileGrid({
|
|
origin: [10, 20],
|
|
sizes: [[3, 3]],
|
|
tileSize: 10,
|
|
resolutions: [1]
|
|
});
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 0, 0], tileGrid))
|
|
.to.eql([0, 0, 0]);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, -1, 0], tileGrid))
|
|
.to.equal(null);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 0, -1], tileGrid))
|
|
.to.equal(null);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 2, 2], tileGrid))
|
|
.to.eql([0, 2, 2]);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 3, 0], tileGrid))
|
|
.to.equal(null);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 0, 3], tileGrid))
|
|
.to.equal(null);
|
|
});
|
|
|
|
it('does not restrict by extent with no extent or sizes', function() {
|
|
var tileGrid = new ol.tilegrid.TileGrid({
|
|
origin: [10, 20],
|
|
tileSize: 10,
|
|
resolutions: [1]
|
|
});
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, Infinity, 0], tileGrid))
|
|
.to.eql([0, Infinity, 0]);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 0, Infinity], tileGrid))
|
|
.to.eql([0, 0, Infinity]);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, -Infinity, 0], tileGrid))
|
|
.to.eql([0, -Infinity, 0]);
|
|
expect(ol.tilecoord.restrictByExtentAndZ([0, 0, Infinity], tileGrid))
|
|
.to.eql([0, 0, Infinity]);
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
goog.require('ol.TileCoord');
|
|
goog.require('ol.tilecoord');
|
|
goog.require('ol.tilegrid.TileGrid');
|