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/CoplanarPolygonOutlineGeome...

162 lines
3.9 KiB
JavaScript

import { Cartesian3 } from "../../Source/Cesium.js";
import { CoplanarPolygonOutlineGeometry } from "../../Source/Cesium.js";
import createPackableSpecs from "../createPackableSpecs.js";
describe("Core/CoplanarPolygonOutlineGeometry", function () {
it("throws with no hierarchy", function () {
expect(function () {
return new CoplanarPolygonOutlineGeometry();
}).toThrowDeveloperError();
});
it("fromPositions throws without positions", function () {
expect(function () {
return CoplanarPolygonOutlineGeometry.fromPositions();
}).toThrowDeveloperError();
});
it("returns undefined with less than 3 unique positions", function () {
var geometry = CoplanarPolygonOutlineGeometry.createGeometry(
CoplanarPolygonOutlineGeometry.fromPositions({
positions: Cartesian3.fromDegreesArrayHeights([
49.0,
18.0,
1000.0,
49.0,
18.0,
5000.0,
49.0,
18.0,
5000.0,
49.0,
18.0,
1000.0,
]),
})
);
expect(geometry).toBeUndefined();
});
it("returns undefined when positions are linear", function () {
var geometry = CoplanarPolygonOutlineGeometry.createGeometry(
CoplanarPolygonOutlineGeometry.fromPositions({
positions: Cartesian3.fromDegreesArrayHeights([
0.0,
0.0,
1.0,
0.0,
0.0,
2.0,
0.0,
0.0,
3.0,
]),
})
);
expect(geometry).toBeUndefined();
});
it("createGeometry returns undefined due to duplicate hierarchy positions", function () {
var hierarchy = {
positions: Cartesian3.fromDegreesArray([1.0, 1.0, 1.0, 1.0, 1.0, 1.0]),
holes: [
{
positions: Cartesian3.fromDegreesArray([
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
]),
},
],
};
var geometry = CoplanarPolygonOutlineGeometry.createGeometry(
new CoplanarPolygonOutlineGeometry({ polygonHierarchy: hierarchy })
);
expect(geometry).toBeUndefined();
});
it("creates positions", function () {
var geometry = CoplanarPolygonOutlineGeometry.createGeometry(
CoplanarPolygonOutlineGeometry.fromPositions({
positions: Cartesian3.fromDegreesArrayHeights([
-1.0,
-1.0,
0.0,
-1.0,
0.0,
1.0,
-1.0,
1.0,
1.0,
-1.0,
2.0,
0.0,
]),
})
);
expect(geometry.attributes.position.values.length).toEqual(4 * 3);
expect(geometry.indices.length).toEqual(4 * 2);
});
var positions = Cartesian3.fromDegreesArray([
-124.0,
35.0,
-110.0,
35.0,
-110.0,
40.0,
]);
var holePositions0 = Cartesian3.fromDegreesArray([
-122.0,
36.0,
-122.0,
39.0,
-112.0,
39.0,
]);
var holePositions1 = Cartesian3.fromDegreesArray([
-120.0,
36.5,
-114.0,
36.5,
-114.0,
38.5,
]);
var hierarchy = {
positions: positions,
holes: [
{
positions: holePositions0,
holes: [
{
positions: holePositions1,
holes: undefined,
},
],
},
],
};
var polygon = new CoplanarPolygonOutlineGeometry({
polygonHierarchy: hierarchy,
});
function addPositions(array, positions) {
for (var i = 0; i < positions.length; ++i) {
array.push(positions[i].x, positions[i].y, positions[i].z);
}
}
var packedInstance = [3.0, 1.0];
addPositions(packedInstance, positions);
packedInstance.push(3.0, 1.0);
addPositions(packedInstance, holePositions0);
packedInstance.push(3.0, 0.0);
addPositions(packedInstance, holePositions1);
packedInstance.push(34);
createPackableSpecs(CoplanarPolygonOutlineGeometry, polygon, packedInstance);
});