DSDSWeb/static/js/Cesium-1.53/Specs/Scene/BoxEmitterSpec.js

72 lines
2.4 KiB
JavaScript
Raw Normal View History

2024-07-11 18:02:47 +08:00
defineSuite([
'Scene/BoxEmitter',
'Core/Cartesian3',
'Scene/Particle'
], function(
BoxEmitter,
Cartesian3,
Particle) {
'use strict';
var emitter;
it('default constructor', function() {
emitter = new BoxEmitter();
expect(emitter.dimensions).toEqual(new Cartesian3(1.0, 1.0, 1.0));
});
it('constructor', function() {
var dimensions = new Cartesian3(2.0, 3.0, 4.0);
emitter = new BoxEmitter(dimensions);
expect(emitter.dimensions).toEqual(dimensions);
});
it('constructor throws with invalid dimensions', function() {
expect(function() {
emitter = new BoxEmitter(new Cartesian3(-1.0, 1.0, 1.0));
}).toThrowDeveloperError();
expect(function() {
emitter = new BoxEmitter(new Cartesian3(1.0, -1.0, 1.0));
}).toThrowDeveloperError();
expect(function() {
emitter = new BoxEmitter(new Cartesian3(1.0, 1.0, -1.0));
}).toThrowDeveloperError();
});
it('dimensions setter', function() {
emitter = new BoxEmitter();
var dimensions = new Cartesian3(2.0, 3.0, 4.0);
emitter.dimensions = dimensions;
expect(emitter.dimensions).toEqual(dimensions);
});
it('dimensions setter throws with invalid value', function() {
emitter = new BoxEmitter();
expect(function() {
emitter.dimensions = undefined;
}).toThrowDeveloperError();
expect(function() {
emitter.dimensions = new Cartesian3(-1.0, 1.0, 1.0);
}).toThrowDeveloperError();
expect(function() {
emitter.dimensions = new Cartesian3(1.0, -1.0, 1.0);
}).toThrowDeveloperError();
expect(function() {
emitter.dimensions = new Cartesian3(1.0, -1.0, 1.0);
}).toThrowDeveloperError();
});
it('emits', function() {
emitter = new BoxEmitter(new Cartesian3(2.0, 3.0, 4.0));
var particle = new Particle();
for (var i = 0; i < 1000; ++i) {
emitter.emit(particle);
expect(particle.position.x).toBeLessThanOrEqualTo(emitter.dimensions.x);
expect(particle.position.y).toBeLessThanOrEqualTo(emitter.dimensions.y);
expect(particle.position.z).toBeLessThanOrEqualTo(emitter.dimensions.z);
expect(particle.velocity).toEqual(Cartesian3.normalize(particle.position, new Cartesian3()));
}
});
});