import { CustomHeightmapTerrainProvider } from "../../Source/Cesium.js";
|
import { TerrainProvider } from "../../Source/Cesium.js";
|
import { WebMercatorTilingScheme } from "../../Source/Cesium.js";
|
|
describe("Core/CustomHeightmapTerrainProvider", function () {
|
it("conforms to TerrainProvider interface", function () {
|
expect(CustomHeightmapTerrainProvider).toConformToInterface(
|
TerrainProvider
|
);
|
});
|
|
it("constructor throws if callback is not provided", function () {
|
var width = 2;
|
var height = 2;
|
|
expect(function () {
|
return new CustomHeightmapTerrainProvider({
|
width: width,
|
height: height,
|
});
|
}).toThrowDeveloperError();
|
});
|
|
it("constructor throws if width is not provided", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
expect(function () {
|
return new CustomHeightmapTerrainProvider({
|
callback: callback,
|
height: height,
|
});
|
}).toThrowDeveloperError();
|
});
|
|
it("constructor throws if height is not provided", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
expect(function () {
|
return new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
});
|
}).toThrowDeveloperError();
|
});
|
|
it("constructs with a credit", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
credit: "Credit",
|
});
|
|
expect(provider.credit).toBeDefined();
|
});
|
|
it("constructs with a tiling scheme", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
tilingScheme: new WebMercatorTilingScheme(),
|
});
|
|
expect(provider.tilingScheme).toBeInstanceOf(WebMercatorTilingScheme);
|
});
|
|
it("resolves readyPromise", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
return provider.readyPromise.then(function (result) {
|
expect(result).toBe(true);
|
expect(provider.ready).toBe(true);
|
});
|
});
|
|
it("has error event", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
expect(provider.errorEvent).toBeDefined();
|
expect(provider.errorEvent).toBe(provider.errorEvent);
|
});
|
|
it("gets geometric error", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
var geometricError = TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap(
|
provider.tilingScheme.ellipsoid,
|
Math.max(provider.width, provider.height),
|
provider.tilingScheme.getNumberOfXTilesAtLevel(0)
|
);
|
expect(provider.getLevelMaximumGeometricError(0)).toBe(geometricError);
|
});
|
|
it("water mask is disabled", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
expect(provider.hasWaterMask).toBe(false);
|
});
|
|
it("vertex normals are disabled", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
expect(provider.hasVertexNormals).toBe(false);
|
});
|
|
it("requestTileGeometry receives heightmap data as Int8Array", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Int8Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
var terrainData = provider.requestTileGeometry(0, 0, 0);
|
expect(terrainData).toBeDefined();
|
});
|
|
it("requestTileGeometry receives heightmap data as Uint8Array", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Uint8Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
var terrainData = provider.requestTileGeometry(0, 0, 0);
|
expect(terrainData).toBeDefined();
|
});
|
|
it("requestTileGeometry receives heightmap data as Int16Array", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Int16Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
var terrainData = provider.requestTileGeometry(0, 0, 0);
|
expect(terrainData).toBeDefined();
|
});
|
|
it("requestTileGeometry receives heightmap data as Uint16Array", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Uint16Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
var terrainData = provider.requestTileGeometry(0, 0, 0);
|
expect(terrainData).toBeDefined();
|
});
|
|
it("requestTileGeometry receives heightmap data as Int32Array", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Int32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
var terrainData = provider.requestTileGeometry(0, 0, 0);
|
expect(terrainData).toBeDefined();
|
});
|
|
it("requestTileGeometry receives heightmap data as Uint32Array", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Uint32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
var terrainData = provider.requestTileGeometry(0, 0, 0);
|
expect(terrainData).toBeDefined();
|
});
|
|
it("requestTileGeometry receives heightmap data as Float32Array", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
var terrainData = provider.requestTileGeometry(0, 0, 0);
|
expect(terrainData).toBeDefined();
|
});
|
|
it("requestTileGeometry receives heightmap data as Float64Array", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Float64Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
var terrainData = provider.requestTileGeometry(0, 0, 0);
|
expect(terrainData).toBeDefined();
|
});
|
|
it("requestTileGeometry receives heightmap data as Number array", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
var buffer = new Array(4);
|
buffer[0] = 0.0;
|
buffer[1] = 0.0;
|
buffer[2] = 0.0;
|
buffer[3] = 0.0;
|
return buffer;
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
var terrainData = provider.requestTileGeometry(0, 0, 0);
|
expect(terrainData).toBeDefined();
|
});
|
|
it("requestTileGeometry returns undefined when callback function returns undefined", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return undefined;
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
expect(provider.requestTileGeometry()).toBeUndefined();
|
});
|
|
it("gets width and height", function () {
|
var width = 2;
|
var height = 3;
|
var callback = function (x, y, level) {
|
return new Float32Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
expect(provider.width).toEqual(width);
|
expect(provider.height).toEqual(height);
|
});
|
|
it("returns undefined for getTileDataAvailable", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Int16Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
expect(provider.getTileDataAvailable()).toBeUndefined();
|
});
|
|
it("returns undefined for loadTileDataAvailability", function () {
|
var width = 2;
|
var height = 2;
|
var callback = function (x, y, level) {
|
return new Int16Array(width * height);
|
};
|
|
var provider = new CustomHeightmapTerrainProvider({
|
callback: callback,
|
width: width,
|
height: height,
|
});
|
|
expect(provider.loadTileDataAvailability()).toBeUndefined();
|
});
|
});
|