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.
124 lines
3.9 KiB
JavaScript
124 lines
3.9 KiB
JavaScript
import { Cartesian3 } from "../../Source/Cesium.js";
|
|
import { Math as CesiumMath } from "../../Source/Cesium.js";
|
|
import { Spherical } from "../../Source/Cesium.js";
|
|
|
|
describe("Core/Spherical", function () {
|
|
//Mock object to make sure methods take non-sphericals.
|
|
function NotSpherical(clock, cone, magnitude) {
|
|
this.clock = clock;
|
|
this.cone = cone;
|
|
this.magnitude = magnitude;
|
|
}
|
|
|
|
NotSpherical.areEqual = function (left, right) {
|
|
return (
|
|
left.clock === right.clock &&
|
|
left.cone === right.cone &&
|
|
left.magnitude === right.magnitude
|
|
);
|
|
};
|
|
|
|
it("Default constructing sets properties to their expected values.", function () {
|
|
var v = new Spherical();
|
|
expect(v.clock).toEqual(0);
|
|
expect(v.cone).toEqual(0);
|
|
expect(v.magnitude).toEqual(1.0);
|
|
});
|
|
|
|
it("Construtor parameters are assigned to the appropriate properties", function () {
|
|
var v = new Spherical(1, 2, 3);
|
|
expect(v.clock).toEqual(1);
|
|
expect(v.cone).toEqual(2);
|
|
expect(v.magnitude).toEqual(3);
|
|
});
|
|
|
|
var fortyFiveDegrees = Math.PI / 4.0;
|
|
var sixtyDegrees = Math.PI / 3.0;
|
|
var cartesian = new Cartesian3(1.0, Math.sqrt(3.0), -2.0);
|
|
var spherical = new Spherical(
|
|
sixtyDegrees,
|
|
fortyFiveDegrees + Math.PI / 2.0,
|
|
Math.sqrt(8.0)
|
|
);
|
|
|
|
it("Can convert Cartesian3 to a new spherical instance", function () {
|
|
expect(spherical).toEqualEpsilon(
|
|
Spherical.fromCartesian3(cartesian),
|
|
CesiumMath.EPSILON15
|
|
);
|
|
});
|
|
|
|
it("Can convert Cartesian3 to an existing spherical instance", function () {
|
|
var existing = new Spherical();
|
|
expect(spherical).toEqualEpsilon(
|
|
Spherical.fromCartesian3(cartesian, existing),
|
|
CesiumMath.EPSILON15
|
|
);
|
|
expect(spherical).toEqualEpsilon(existing, CesiumMath.EPSILON15);
|
|
});
|
|
|
|
it("Cloning with no result parameter returns a new instance.", function () {
|
|
var v = new Spherical(1, 2, 3);
|
|
var clone = v.clone();
|
|
expect(clone).not.toBe(v);
|
|
expect(clone).toBeInstanceOf(Spherical);
|
|
expect(clone).toEqual(v);
|
|
});
|
|
|
|
it("Cloning with result modifies existing instance and returns it.", function () {
|
|
var v = new Spherical(1, 2, 3);
|
|
var w = new NotSpherical();
|
|
expect(NotSpherical.areEqual(v, w)).toEqual(false);
|
|
var clone = v.clone(w);
|
|
expect(clone).not.toBe(v);
|
|
expect(clone).toBe(w);
|
|
expect(NotSpherical.areEqual(v, w)).toEqual(true);
|
|
});
|
|
|
|
it("Normalizing with no result parameter creates new instance and sets magnitude to 1.0", function () {
|
|
var v = new Spherical(0, 2, 3);
|
|
var w = Spherical.normalize(v);
|
|
expect(w).not.toEqual(v);
|
|
expect(w.clock).toEqual(0);
|
|
expect(w.cone).toEqual(2);
|
|
expect(w.magnitude).toEqual(1);
|
|
});
|
|
|
|
it("Normalizing with result parameter modifies instance and sets magnitude to 1.0", function () {
|
|
var v = new Spherical(0, 2, 3);
|
|
var w = new NotSpherical();
|
|
var q = Spherical.normalize(v, w);
|
|
expect(q).not.toEqual(v);
|
|
expect(q).toBe(w);
|
|
expect(q.clock).toEqual(0);
|
|
expect(q.cone).toEqual(2);
|
|
expect(q.magnitude).toEqual(1);
|
|
});
|
|
|
|
it("Normalizing with this as result parameter modifies instance and sets magnitude to 1.0", function () {
|
|
var v = new Spherical(0, 2, 3);
|
|
var q = Spherical.normalize(v, v);
|
|
expect(q).toBe(v);
|
|
expect(q.clock).toEqual(0);
|
|
expect(q.cone).toEqual(2);
|
|
expect(q.magnitude).toEqual(1);
|
|
});
|
|
|
|
it("equalsEpsilon returns true for expected values.", function () {
|
|
expect(new Spherical(1, 2, 1)).toEqualEpsilon(new NotSpherical(1, 2, 1), 0);
|
|
expect(new Spherical(1, 2, 1)).toEqualEpsilon(new NotSpherical(1, 2, 2), 1);
|
|
});
|
|
|
|
it("equalsEpsilon returns false for expected values.", function () {
|
|
expect(new Spherical(1, 2, 1)).not.toEqualEpsilon(
|
|
new NotSpherical(1, 2, 3),
|
|
1
|
|
);
|
|
});
|
|
|
|
it("toString returns the expected format.", function () {
|
|
var v = new Spherical(1, 2, 3);
|
|
expect(v.toString()).toEqual("(1, 2, 3)");
|
|
});
|
|
});
|