You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Cesium-Prequel/Specs/Core/sampleTerrainMostDetailedSp...

84 lines
2.7 KiB
JavaScript

import { Cartographic } from "../../Source/Cesium.js";
import { CesiumTerrainProvider } from "../../Source/Cesium.js";
import { createWorldTerrain } from "../../Source/Cesium.js";
import { sampleTerrainMostDetailed } from "../../Source/Cesium.js";
describe("Core/sampleTerrainMostDetailed", function () {
var worldTerrain;
beforeAll(function () {
worldTerrain = createWorldTerrain();
return worldTerrain.readyPromise;
});
it("queries heights", function () {
var positions = [
Cartographic.fromDegrees(86.925145, 27.988257),
Cartographic.fromDegrees(87.0, 28.0),
];
return sampleTerrainMostDetailed(worldTerrain, positions).then(function (
passedPositions
) {
expect(passedPositions).toBe(positions);
expect(positions[0].height).toBeGreaterThan(5000);
expect(positions[0].height).toBeLessThan(10000);
expect(positions[1].height).toBeGreaterThan(5000);
expect(positions[1].height).toBeLessThan(10000);
});
});
it("should throw querying heights from Small Terrain", function () {
var terrainProvider = new CesiumTerrainProvider({
url: "https://s3.amazonaws.com/cesiumjs/smallTerrain",
});
var positions = [
Cartographic.fromDegrees(86.925145, 27.988257),
Cartographic.fromDegrees(87.0, 28.0),
];
return sampleTerrainMostDetailed(terrainProvider, positions)
.then(function () {
fail("the promise should not resolve");
})
.otherwise(function () {});
});
it("uses a suitable common tile height for a range of locations", function () {
var positions = [
Cartographic.fromDegrees(86.925145, 27.988257),
Cartographic.fromDegrees(87.0, 28.0),
];
return sampleTerrainMostDetailed(worldTerrain, positions).then(function () {
expect(positions[0].height).toBeGreaterThan(5000);
expect(positions[0].height).toBeLessThan(10000);
expect(positions[1].height).toBeGreaterThan(5000);
expect(positions[1].height).toBeLessThan(10000);
});
});
it("requires terrainProvider and positions", function () {
var positions = [
Cartographic.fromDegrees(86.925145, 27.988257),
Cartographic.fromDegrees(87.0, 28.0),
];
expect(function () {
sampleTerrainMostDetailed(undefined, positions);
}).toThrowDeveloperError();
expect(function () {
sampleTerrainMostDetailed(worldTerrain, undefined);
}).toThrowDeveloperError();
});
it("works for a dodgy point right near the edge of a tile", function () {
var positions = [new Cartographic(0.33179290856829535, 0.7363107781851078)];
return sampleTerrainMostDetailed(worldTerrain, positions).then(function () {
expect(positions[0].height).toBeDefined();
});
});
});