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.

140 lines
3.5 KiB
JavaScript

import { Cartesian3 } from "../../Source/Cesium.js";
import { Color } from "../../Source/Cesium.js";
import { Camera } from "../../Source/Cesium.js";
import { DebugCameraPrimitive } from "../../Source/Cesium.js";
import createScene from "../createScene.js";
describe(
"Scene/DebugCameraPrimitive",
function () {
var scene;
var camera;
beforeAll(function () {
scene = createScene({
scene3DOnly: true,
});
scene.camera.position = new Cartesian3(0.0, 0.0, 0.0);
scene.camera.direction = Cartesian3.negate(
Cartesian3.UNIT_X,
new Cartesian3()
);
scene.camera.up = Cartesian3.clone(Cartesian3.UNIT_Z);
scene.camera.frustum.near = 1.0;
scene.camera.frustum.far = 500.0;
camera = Camera.clone(scene.camera);
scene.camera.zoomOut(1.0);
});
afterAll(function () {
scene.destroyForSpecs();
});
afterEach(function () {
scene.primitives.removeAll();
});
it("throws if options.camera is undefined", function () {
expect(function () {
return new DebugCameraPrimitive();
}).toThrowDeveloperError();
});
it("gets the default properties", function () {
var p = new DebugCameraPrimitive({
camera: camera,
});
expect(p.show).toEqual(true);
expect(p.id).not.toBeDefined();
p.destroy();
});
it("constructs with options", function () {
var p = new DebugCameraPrimitive({
camera: camera,
frustumSplits: [0.1, 1000.0],
color: Color.YELLOW,
updateOnChange: false,
show: false,
id: "id",
});
expect(p.show).toEqual(false);
expect(p.id).toEqual("id");
p.destroy();
});
it("renders", function () {
scene.primitives.add(
new DebugCameraPrimitive({
camera: camera,
})
);
expect(scene).notToRender([0, 0, 0, 255]);
});
it("does not render when show is false", function () {
scene.primitives.add(
new DebugCameraPrimitive({
camera: camera,
show: false,
})
);
expect(scene).toRender([0, 0, 0, 255]);
});
it("updates when underlying camera changes", function () {
var p = scene.primitives.add(
new DebugCameraPrimitive({
camera: camera,
})
);
scene.renderForSpecs();
var primitive = p._outlinePrimitives[0];
scene.renderForSpecs();
expect(p._outlinePrimitives[0]).not.toBe(primitive);
});
it("does not update when updateOnChange is false", function () {
var p = scene.primitives.add(
new DebugCameraPrimitive({
camera: camera,
updateOnChange: false,
})
);
scene.renderForSpecs();
var primitive = p._primitive;
scene.renderForSpecs();
expect(p._primitive).toBe(primitive);
});
it("is picked", function () {
var p = scene.primitives.add(
new DebugCameraPrimitive({
camera: camera,
id: "id",
})
);
expect(scene).toPickAndCall(function (result) {
expect(result.primitive).toBe(p);
expect(result.id).toBe("id");
});
});
it("isDestroyed", function () {
var p = scene.primitives.add(
new DebugCameraPrimitive({
camera: camera,
})
);
expect(p.isDestroyed()).toEqual(false);
scene.primitives.remove(p);
expect(p.isDestroyed()).toEqual(true);
});
},
"WebGL"
);