178 lines
5.6 KiB
JavaScript
178 lines
5.6 KiB
JavaScript
defineSuite([
|
|
'Scene/QuadtreeTile',
|
|
'Core/GeographicTilingScheme',
|
|
'Core/Math',
|
|
'Core/Rectangle',
|
|
'Core/WebMercatorTilingScheme'
|
|
], function(
|
|
QuadtreeTile,
|
|
GeographicTilingScheme,
|
|
CesiumMath,
|
|
Rectangle,
|
|
WebMercatorTilingScheme) {
|
|
'use strict';
|
|
|
|
it('throws without a options', function() {
|
|
expect(function() {
|
|
return new QuadtreeTile();
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it('throws without options.rectangle', function() {
|
|
expect(function() {
|
|
return new QuadtreeTile({
|
|
x : 0,
|
|
y : 0
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it('throws without options.level', function() {
|
|
expect(function() {
|
|
return new QuadtreeTile({
|
|
rectangle : new Rectangle(
|
|
-CesiumMath.PI_OVER_FOUR,
|
|
0.0,
|
|
CesiumMath.PI_OVER_FOUR,
|
|
CesiumMath.PI_OVER_FOUR
|
|
),
|
|
x : 0,
|
|
y : 0
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it('throws with negative x or y properties', function() {
|
|
expect(function() {
|
|
return new QuadtreeTile({
|
|
x : -1.0,
|
|
y : -1.0,
|
|
level : 1.0
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it('creates rectangle on construction', function() {
|
|
var desc = {tilingScheme : new WebMercatorTilingScheme(), x : 0, y : 0, level : 0};
|
|
var tile = new QuadtreeTile(desc);
|
|
var rectangle = desc.tilingScheme.tileXYToRectangle(desc.x, desc.y, desc.level);
|
|
expect(tile.rectangle).toEqual(rectangle);
|
|
});
|
|
|
|
it('throws if constructed improperly', function() {
|
|
expect(function() {
|
|
return new QuadtreeTile();
|
|
}).toThrowDeveloperError();
|
|
|
|
expect(function() {
|
|
return new QuadtreeTile({
|
|
y : 0,
|
|
level : 0,
|
|
tilingScheme : {
|
|
tileXYToRectangle : function() {
|
|
return undefined;
|
|
}
|
|
}
|
|
});
|
|
}).toThrowDeveloperError();
|
|
|
|
expect(function() {
|
|
return new QuadtreeTile({
|
|
x : 0,
|
|
level : 0,
|
|
tilingScheme : {
|
|
tileXYToRectangle : function() {
|
|
return undefined;
|
|
}
|
|
}
|
|
});
|
|
}).toThrowDeveloperError();
|
|
|
|
expect(function() {
|
|
return new QuadtreeTile({
|
|
x : 0,
|
|
y : 0,
|
|
tilingScheme : {
|
|
tileXYToRectangle : function() {
|
|
return undefined;
|
|
}
|
|
}
|
|
});
|
|
}).toThrowDeveloperError();
|
|
|
|
expect(function() {
|
|
return new QuadtreeTile({
|
|
x : 0,
|
|
y : 0,
|
|
level : 0
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
describe('createLevelZeroTiles', function() {
|
|
var tilingScheme1x1;
|
|
var tilingScheme2x2;
|
|
var tilingScheme2x1;
|
|
var tilingScheme1x2;
|
|
|
|
beforeEach(function() {
|
|
tilingScheme1x1 = new GeographicTilingScheme({
|
|
numberOfLevelZeroTilesX : 1,
|
|
numberOfLevelZeroTilesY : 1
|
|
});
|
|
tilingScheme2x2 = new GeographicTilingScheme({
|
|
numberOfLevelZeroTilesX : 2,
|
|
numberOfLevelZeroTilesY : 2
|
|
});
|
|
tilingScheme2x1 = new GeographicTilingScheme({
|
|
numberOfLevelZeroTilesX : 2,
|
|
numberOfLevelZeroTilesY : 1
|
|
});
|
|
tilingScheme1x2 = new GeographicTilingScheme({
|
|
numberOfLevelZeroTilesX : 1,
|
|
numberOfLevelZeroTilesY : 2
|
|
});
|
|
});
|
|
|
|
it('requires tilingScheme', function() {
|
|
expect(function() {
|
|
return QuadtreeTile.createLevelZeroTiles(undefined);
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it('creates expected number of tiles', function() {
|
|
var tiles = QuadtreeTile.createLevelZeroTiles(tilingScheme1x1);
|
|
expect(tiles.length).toBe(1);
|
|
|
|
tiles = QuadtreeTile.createLevelZeroTiles(tilingScheme2x2);
|
|
expect(tiles.length).toBe(4);
|
|
|
|
tiles = QuadtreeTile.createLevelZeroTiles(tilingScheme2x1);
|
|
expect(tiles.length).toBe(2);
|
|
|
|
tiles = QuadtreeTile.createLevelZeroTiles(tilingScheme1x2);
|
|
expect(tiles.length).toBe(2);
|
|
});
|
|
|
|
it('created tiles are associated with specified tiling scheme', function() {
|
|
var tiles = QuadtreeTile.createLevelZeroTiles(tilingScheme2x2);
|
|
for (var i = 0; i < tiles.length; ++i) {
|
|
expect(tiles[i].tilingScheme).toBe(tilingScheme2x2);
|
|
}
|
|
});
|
|
|
|
it('created tiles are ordered from the northwest and proceeding east and then south', function() {
|
|
var tiles = QuadtreeTile.createLevelZeroTiles(tilingScheme2x2);
|
|
var northwest = tiles[0];
|
|
var northeast = tiles[1];
|
|
var southwest = tiles[2];
|
|
var southeast = tiles[3];
|
|
|
|
expect(northeast.rectangle.west).toBeGreaterThan(northwest.rectangle.west);
|
|
expect(southeast.rectangle.west).toBeGreaterThan(southwest.rectangle.west);
|
|
expect(northeast.rectangle.south).toBeGreaterThan(southeast.rectangle.south);
|
|
expect(northwest.rectangle.south).toBeGreaterThan(southwest.rectangle.south);
|
|
});
|
|
});
|
|
});
|