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.

362 lines
10 KiB
JavaScript

import { Resource } from "../../Source/Cesium.js";
import { SceneMode } from "../../Source/Cesium.js";
import { SkyBox } from "../../Source/Cesium.js";
import createScene from "../createScene.js";
describe(
"Scene/SkyBox",
function () {
var scene;
var skyBox;
var loadedImage;
beforeAll(function () {
scene = createScene();
return Resource.fetchImage("./Data/Images/Blue.png").then(function (
image
) {
loadedImage = image;
});
});
afterAll(function () {
scene.destroyForSpecs();
});
beforeEach(function () {
scene.mode = SceneMode.SCENE3D;
});
afterEach(function () {
skyBox = skyBox && skyBox.destroy();
scene.skyBox = undefined;
});
it("draws a sky box from Images", function () {
skyBox = new SkyBox({
sources: {
positiveX: loadedImage,
negativeX: loadedImage,
positiveY: loadedImage,
negativeY: loadedImage,
positiveZ: loadedImage,
negativeZ: loadedImage,
},
});
expect(scene).toRender([0, 0, 0, 255]);
scene.skyBox = skyBox;
expect(scene).toRender([0, 0, 255, 255]);
});
it("does not render when show is false", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
show: false,
});
expect(scene).toRender([0, 0, 0, 255]);
scene.skyBox = skyBox;
expect(scene).toRender([0, 0, 0, 255]);
});
it("does not render in 2D", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.mode = SceneMode.SCENE2D;
expect(scene).toRender([0, 0, 0, 255]);
scene.skyBox = skyBox;
expect(scene).toRender([0, 0, 0, 255]);
});
it("does not render without a render pass", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.frameState.passes.render = false;
scene.skyBox = skyBox;
var command = skyBox.update(scene.frameState);
expect(command).not.toBeDefined();
});
it("gets constructor options", function () {
skyBox = new SkyBox({
sources: {
positiveX: "positiveX.png",
negativeX: "negativeX.png",
positiveY: "positiveY.png",
negativeY: "negativeY.png",
positiveZ: "positiveZ.png",
negativeZ: "negativeZ.png",
},
show: false,
});
expect(skyBox.sources.positiveX).toEqual("positiveX.png");
expect(skyBox.sources.negativeX).toEqual("negativeX.png");
expect(skyBox.sources.positiveY).toEqual("positiveY.png");
expect(skyBox.sources.negativeY).toEqual("negativeY.png");
expect(skyBox.sources.positiveZ).toEqual("positiveZ.png");
expect(skyBox.sources.negativeZ).toEqual("negativeZ.png");
expect(skyBox.show).toEqual(false);
});
it("isDestroyed", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
expect(skyBox.isDestroyed()).toEqual(false);
skyBox.destroy();
expect(skyBox.isDestroyed()).toEqual(true);
skyBox = undefined;
});
it("throws when constructed without positiveX", function () {
skyBox = new SkyBox({
sources: {
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed without negativeX", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed without positiveY", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed without negativeY", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed without positiveZ", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed without negativeZ", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed when positiveX is a different type", function () {
skyBox = new SkyBox({
sources: {
positiveX: loadedImage,
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed when negativeX is a different type", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: loadedImage,
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed when positiveY is a different type", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: loadedImage,
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed when negativeY is a different type", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: loadedImage,
positiveZ: "./Data/Images/Blue.png",
negativeZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed when positiveZ is a different type", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: loadedImage,
negativeZ: "./Data/Images/Blue.png",
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
it("throws when constructed when negativeZ is a different type", function () {
skyBox = new SkyBox({
sources: {
positiveX: "./Data/Images/Blue.png",
negativeX: "./Data/Images/Blue.png",
positiveY: "./Data/Images/Blue.png",
negativeY: "./Data/Images/Blue.png",
positiveZ: "./Data/Images/Blue.png",
negativeZ: loadedImage,
},
});
scene.skyBox = skyBox;
expect(function () {
return scene.render();
}).toThrowDeveloperError();
});
},
"WebGL"
);