import { Cartesian3 } from "../../Source/Cesium.js"; import { FrustumOutlineGeometry } from "../../Source/Cesium.js"; import { Math as CesiumMath } from "../../Source/Cesium.js"; import { PerspectiveFrustum } from "../../Source/Cesium.js"; import { Quaternion } from "../../Source/Cesium.js"; import { VertexFormat } from "../../Source/Cesium.js"; import createPackableSpecs from "../createPackableSpecs.js"; describe("Core/FrustumOutlineGeometry", function () { it("constructor throws without options", function () { expect(function () { return new FrustumOutlineGeometry(); }).toThrowDeveloperError(); }); it("constructor throws without frustum", function () { expect(function () { return new FrustumOutlineGeometry({ origin: Cartesian3.ZERO, orientation: Quaternion.IDENTITY, }); }).toThrowDeveloperError(); }); it("constructor throws without position", function () { expect(function () { return new FrustumOutlineGeometry({ frustum: new PerspectiveFrustum(), orientation: Quaternion.IDENTITY, }); }).toThrowDeveloperError(); }); it("constructor throws without orientation", function () { expect(function () { return new FrustumOutlineGeometry({ frustum: new PerspectiveFrustum(), origin: Cartesian3.ZERO, }); }).toThrowDeveloperError(); }); it("constructor computes all vertex attributes", function () { var frustum = new PerspectiveFrustum(); frustum.fov = CesiumMath.toRadians(30.0); frustum.aspectRatio = 1920.0 / 1080.0; frustum.near = 1.0; frustum.far = 3.0; var m = FrustumOutlineGeometry.createGeometry( new FrustumOutlineGeometry({ frustum: frustum, origin: Cartesian3.ZERO, orientation: Quaternion.IDENTITY, }) ); var numVertices = 8; var numLines = 12; expect(m.attributes.position.values.length).toEqual(numVertices * 3); expect(m.indices.length).toEqual(numLines * 2); expect(m.boundingSphere.center).toEqual(new Cartesian3(0.0, 0.0, 2.0)); expect(m.boundingSphere.radius).toBeGreaterThan(1.0); expect(m.boundingSphere.radius).toBeLessThan(2.0); }); var packableFrustum = new PerspectiveFrustum(); packableFrustum.fov = 1.0; packableFrustum.aspectRatio = 2.0; packableFrustum.near = 3.0; packableFrustum.far = 4.0; createPackableSpecs( FrustumOutlineGeometry, new FrustumOutlineGeometry({ frustum: packableFrustum, origin: Cartesian3.ZERO, orientation: Quaternion.IDENTITY, vertexFormat: VertexFormat.POSITION_ONLY, }), [0.0, 1.0, 2.0, 3.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0] ); });