128 lines
4.3 KiB
JavaScript
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');
|