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.
203 lines
6.4 KiB
JavaScript
203 lines
6.4 KiB
JavaScript
import { ApproximateTerrainHeights } from "../../Source/Cesium.js";
|
|
import { GeometryOffsetAttribute } from "../../Source/Cesium.js";
|
|
import { GroundGeometryUpdater } from "../../Source/Cesium.js";
|
|
import { HeightReference } from "../../Source/Cesium.js";
|
|
|
|
describe("DataSources/GroundGeometryUpdater", function () {
|
|
beforeAll(function () {
|
|
return ApproximateTerrainHeights.initialize();
|
|
});
|
|
|
|
afterAll(function () {
|
|
ApproximateTerrainHeights._initPromise = undefined;
|
|
ApproximateTerrainHeights._terrainHeights = undefined;
|
|
});
|
|
|
|
it("getGeometryHeight works for for height reference NONE and RELATIVE_TO_GROUND", function () {
|
|
var expected = 30;
|
|
var height = expected;
|
|
var heightReference = HeightReference.NONE;
|
|
expect(
|
|
GroundGeometryUpdater.getGeometryHeight(height, heightReference)
|
|
).toEqual(expected);
|
|
|
|
heightReference = HeightReference.RELATIVE_TO_GROUND;
|
|
expect(
|
|
GroundGeometryUpdater.getGeometryHeight(height, heightReference)
|
|
).toEqual(expected);
|
|
});
|
|
|
|
it("getGeometryHeight works for for height reference CLAMP_TO_GROUND", function () {
|
|
var height = 50;
|
|
var heightReference = HeightReference.CLAMP_TO_GROUND;
|
|
expect(
|
|
GroundGeometryUpdater.getGeometryHeight(height, heightReference)
|
|
).toEqual(0);
|
|
});
|
|
|
|
it("getGeometryExtrudedHeight works for for height reference NONE and RELATIVE_TO_GROUND", function () {
|
|
var expected = 30;
|
|
var height = expected;
|
|
var heightReference = HeightReference.NONE;
|
|
expect(
|
|
GroundGeometryUpdater.getGeometryExtrudedHeight(height, heightReference)
|
|
).toEqual(expected);
|
|
|
|
heightReference = HeightReference.RELATIVE_TO_GROUND;
|
|
expect(
|
|
GroundGeometryUpdater.getGeometryExtrudedHeight(height, heightReference)
|
|
).toEqual(expected);
|
|
});
|
|
|
|
it("getGeometryExtrudedHeight works for for height reference CLAMP_TO_GROUND", function () {
|
|
var height = 50;
|
|
var heightReference = HeightReference.CLAMP_TO_GROUND;
|
|
expect(
|
|
GroundGeometryUpdater.getGeometryExtrudedHeight(height, heightReference)
|
|
).toEqual(GroundGeometryUpdater.CLAMP_TO_GROUND);
|
|
});
|
|
|
|
it("computeGeometryOffsetAttribute works", function () {
|
|
var height = 50;
|
|
var extrudedHeight = 30;
|
|
var heightReference;
|
|
var extrudedHeightReference;
|
|
var result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
height,
|
|
heightReference,
|
|
extrudedHeight,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBeUndefined();
|
|
|
|
heightReference = HeightReference.NONE;
|
|
extrudedHeightReference = HeightReference.NONE;
|
|
result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
height,
|
|
heightReference,
|
|
extrudedHeight,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBeUndefined();
|
|
|
|
heightReference = HeightReference.NONE;
|
|
extrudedHeightReference = HeightReference.CLAMP_TO_GROUND;
|
|
result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
height,
|
|
heightReference,
|
|
extrudedHeight,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBeUndefined();
|
|
|
|
heightReference = HeightReference.NONE;
|
|
extrudedHeightReference = HeightReference.RELATIVE_TO_GROUND;
|
|
result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
height,
|
|
heightReference,
|
|
extrudedHeight,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBe(GeometryOffsetAttribute.TOP);
|
|
|
|
heightReference = HeightReference.CLAMP_TO_GROUND;
|
|
extrudedHeightReference = HeightReference.NONE;
|
|
result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
height,
|
|
heightReference,
|
|
extrudedHeight,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBe(GeometryOffsetAttribute.TOP);
|
|
|
|
heightReference = HeightReference.CLAMP_TO_GROUND;
|
|
extrudedHeightReference = HeightReference.CLAMP_TO_GROUND;
|
|
result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
height,
|
|
heightReference,
|
|
extrudedHeight,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBe(GeometryOffsetAttribute.TOP);
|
|
|
|
heightReference = HeightReference.CLAMP_TO_GROUND;
|
|
extrudedHeightReference = HeightReference.RELATIVE_TO_GROUND;
|
|
result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
height,
|
|
heightReference,
|
|
extrudedHeight,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBe(GeometryOffsetAttribute.ALL);
|
|
|
|
heightReference = HeightReference.RELATIVE_TO_GROUND;
|
|
extrudedHeightReference = HeightReference.NONE;
|
|
result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
height,
|
|
heightReference,
|
|
extrudedHeight,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBe(GeometryOffsetAttribute.TOP);
|
|
|
|
heightReference = HeightReference.RELATIVE_TO_GROUND;
|
|
extrudedHeightReference = HeightReference.CLAMP_TO_GROUND;
|
|
result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
height,
|
|
heightReference,
|
|
extrudedHeight,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBe(GeometryOffsetAttribute.TOP);
|
|
|
|
heightReference = HeightReference.RELATIVE_TO_GROUND;
|
|
extrudedHeightReference = HeightReference.RELATIVE_TO_GROUND;
|
|
result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
height,
|
|
heightReference,
|
|
extrudedHeight,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBe(GeometryOffsetAttribute.ALL);
|
|
|
|
result = GroundGeometryUpdater.computeGeometryOffsetAttribute(
|
|
undefined,
|
|
heightReference,
|
|
undefined,
|
|
extrudedHeightReference
|
|
);
|
|
expect(result).toBeUndefined();
|
|
});
|
|
|
|
it("Overridden version of destroy is called", function () {
|
|
var options = {
|
|
scene: {
|
|
frameState: {
|
|
context: {
|
|
depthTexture: true,
|
|
},
|
|
},
|
|
},
|
|
entity: {},
|
|
geometryOptions: {},
|
|
geometryPropertyName: "",
|
|
observedPropertyNames: [],
|
|
};
|
|
|
|
var groundGeometryUpdater = new GroundGeometryUpdater(options);
|
|
|
|
// Just make the terrain propery a dummy object with a destroy method
|
|
var destroySpy = jasmine.createSpy("destroy");
|
|
groundGeometryUpdater._terrainOffsetProperty = {
|
|
destroy: destroySpy,
|
|
};
|
|
|
|
groundGeometryUpdater.destroy();
|
|
|
|
// Make sure the terrain updater is destroyed and the parent class' destroy is called
|
|
expect(destroySpy).toHaveBeenCalled();
|
|
expect(groundGeometryUpdater._terrainOffsetProperty).toBeUndefined();
|
|
expect(groundGeometryUpdater.isDestroyed()).toBe(true);
|
|
});
|
|
});
|