DSDSServer2024/build/build.20240805/static/js/Cesium-1.53/Specs/Widgets/ProjectionPicker/ProjectionPickerSpec.js

128 lines
4.3 KiB
JavaScript

defineSuite([
'Widgets/ProjectionPicker/ProjectionPicker',
'Core/FeatureDetection',
'Specs/createScene',
'Specs/DomEventSimulator'
], function(
ProjectionPicker,
FeatureDetection,
createScene,
DomEventSimulator) {
'use strict';
var scene;
beforeAll(function() {
scene = createScene();
});
afterAll(function() {
scene.destroyForSpecs();
});
it('can create and destroy', function() {
var container = document.createElement('span');
container.id = 'testContainer';
document.body.appendChild(container);
var widget = new ProjectionPicker('testContainer', scene);
expect(widget.container.id).toBe(container.id);
expect(widget.isDestroyed()).toEqual(false);
widget.destroy();
expect(widget.isDestroyed()).toEqual(true);
document.body.removeChild(container);
});
function addCloseOnInputSpec(name, func) {
it(name + ' event closes dropdown if target is not inside container', function() {
var container = document.createElement('span');
container.id = 'testContainer';
document.body.appendChild(container);
var widget = new ProjectionPicker('testContainer', scene);
widget.viewModel.dropDownVisible = true;
func(document.body);
expect(widget.viewModel.dropDownVisible).toEqual(false);
widget.viewModel.dropDownVisible = true;
func(container.firstChild);
expect(widget.viewModel.dropDownVisible).toEqual(true);
widget.destroy();
document.body.removeChild(container);
});
}
function addDisabledDuringFlightSpec(name, func) {
it(name + ' event does nothing during camera flight', function() {
var container = document.createElement('span');
container.id = 'testContainer';
document.body.appendChild(container);
var widget = new ProjectionPicker('testContainer', scene);
scene.camera.flyHome(100.0);
func(container.firstChild);
expect(widget.viewModel.dropDownVisible).toEqual(false);
scene.camera.cancelFlight();
widget.destroy();
document.body.removeChild(container);
});
}
function addDisabledIn2DSpec(name, func) {
it(name + ' event does nothing in 2D', function() {
var container = document.createElement('span');
container.id = 'testContainer';
document.body.appendChild(container);
var widget = new ProjectionPicker('testContainer', scene);
scene.morphTo2D(0.0);
func(container.firstChild);
expect(widget.viewModel.dropDownVisible).toEqual(false);
widget.destroy();
document.body.removeChild(container);
});
}
if (FeatureDetection.supportsPointerEvents()) {
addCloseOnInputSpec('pointerDown', DomEventSimulator.firePointerDown);
addDisabledDuringFlightSpec('pointerDown', DomEventSimulator.firePointerDown);
addDisabledIn2DSpec('pointerDown', DomEventSimulator.firePointerDown);
} else {
addCloseOnInputSpec('mousedown', DomEventSimulator.fireMouseDown);
addCloseOnInputSpec('touchstart', DomEventSimulator.fireTouchStart);
addDisabledDuringFlightSpec('mousedown', DomEventSimulator.fireMouseDown);
addDisabledDuringFlightSpec('touchstart', DomEventSimulator.fireTouchStart);
addDisabledIn2DSpec('mousedown', DomEventSimulator.fireMouseDown);
addDisabledIn2DSpec('touchstart', DomEventSimulator.fireTouchStart);
}
it('constructor throws with no scene', function() {
expect(function() {
return new ProjectionPicker(document.body, undefined);
}).toThrowDeveloperError();
});
it('constructor throws with no element', function() {
expect(function() {
return new ProjectionPicker(undefined, scene);
}).toThrowDeveloperError();
});
it('constructor throws with string element that does not exist', function() {
expect(function() {
return new ProjectionPicker('does not exist', scene);
}).toThrowDeveloperError();
});
}, 'WebGL');