a116878a57
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');
|