DSDSWeb/static/js/Cesium-1.53/Specs/Core/RaySpec.js

94 lines
3.8 KiB
JavaScript

defineSuite([
'Core/Ray',
'Core/Cartesian3'
], function(
Ray,
Cartesian3) {
'use strict';
it('default constructor create zero valued Ray', function() {
var ray = new Ray();
expect(ray.origin).toEqual(Cartesian3.ZERO);
expect(ray.direction).toEqual(Cartesian3.ZERO);
});
it('constructor sets expected properties', function() {
var origin = Cartesian3.UNIT_Y;
var direction = Cartesian3.UNIT_X;
var ray = new Ray(origin, direction);
expect(ray.origin).toEqual(origin);
expect(ray.direction).toEqual(direction);
});
it('constructor normalizes direction', function() {
var origin = Cartesian3.UNIT_Y;
var direction = Cartesian3.multiplyByScalar(Cartesian3.UNIT_X, 18, new Cartesian3());
var ray = new Ray(origin, direction);
expect(ray.origin).toEqual(origin);
expect(ray.direction).toEqual(Cartesian3.UNIT_X);
});
it('clone without a result parameter', function() {
var direction = Cartesian3.normalize(new Cartesian3(1, 2, 3), new Cartesian3());
var ray = new Ray(Cartesian3.UNIT_X, direction);
var returnedResult = Ray.clone(ray);
expect(ray).not.toBe(returnedResult);
expect(ray.origin).not.toBe(returnedResult.origin);
expect(ray.direction).not.toBe(returnedResult.direction);
expect(ray).toEqual(returnedResult);
});
it('clone with a result parameter', function() {
var direction = Cartesian3.normalize(new Cartesian3(1, 2, 3), new Cartesian3());
var ray = new Ray(Cartesian3.UNIT_X, direction);
var result = new Ray();
var returnedResult = Ray.clone(ray, result);
expect(ray).not.toBe(result);
expect(ray.origin).not.toBe(returnedResult.origin);
expect(ray.direction).not.toBe(returnedResult.direction);
expect(result).toBe(returnedResult);
expect(ray).toEqual(result);
});
it('clone works with a result parameter that is an input parameter', function() {
var direction = Cartesian3.normalize(new Cartesian3(1, 2, 3), new Cartesian3());
var ray = new Ray(Cartesian3.UNIT_X, direction);
var returnedResult = Ray.clone(ray, ray);
expect(ray).toBe(returnedResult);
});
it('clone returns undefined if ray is undefined', function() {
expect(Ray.clone()).toBeUndefined();
});
it('getPoint along ray works without a result parameter', function() {
var direction = Cartesian3.normalize(new Cartesian3(1, 2, 3), new Cartesian3());
var ray = new Ray(Cartesian3.UNIT_X, direction);
for ( var i = -10; i < 11; i++) {
var expectedResult = Cartesian3.add(Cartesian3.multiplyByScalar(direction, i, new Cartesian3()), Cartesian3.UNIT_X, new Cartesian3());
var returnedResult = Ray.getPoint(ray, i);
expect(returnedResult).toEqual(expectedResult);
}
});
it('getPoint works with a result parameter', function() {
var direction = Cartesian3.normalize(new Cartesian3(1, 2, 3), new Cartesian3());
var ray = new Ray(Cartesian3.UNIT_X, direction);
var result = new Cartesian3();
for ( var i = -10; i < 11; i++) {
var expectedResult = Cartesian3.add(Cartesian3.multiplyByScalar(direction, i, new Cartesian3()), Cartesian3.UNIT_X, new Cartesian3());
var returnedResult = Ray.getPoint(ray, i, result);
expect(result).toBe(returnedResult);
expect(returnedResult).toEqual(expectedResult);
}
});
it('getPoint throws without a point', function() {
var direction = Cartesian3.normalize(new Cartesian3(1, 2, 3), new Cartesian3());
var ray = new Ray(Cartesian3.UNIT_X, direction);
expect(function() {
Ray.getPoint(ray, undefined);
}).toThrowDeveloperError();
});
});