DSDSServer2024/build/build.20240805/static/js/Cesium-1.53/Specs/Scene/QuadtreeTileSpec.js

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);
});
});
});