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.

142 lines
4.7 KiB
JavaScript

import { Cartesian3 } from "../../Source/Cesium.js";
import { HeadingPitchRange } from "../../Source/Cesium.js";
import { HeadingPitchRoll } from "../../Source/Cesium.js";
import { Math as CesiumMath } from "../../Source/Cesium.js";
import { KmlCamera } from "../../Source/Cesium.js";
import { KmlLookAt } from "../../Source/Cesium.js";
import { KmlTourFlyTo } from "../../Source/Cesium.js";
import pollToPromise from "../pollToPromise.js";
describe("DataSources/KmlTourFlyTo", function () {
it("generates camera options for KmlLookAt", function () {
var position = Cartesian3.fromDegrees(40.0, 30.0, 1000);
var hpr = new HeadingPitchRange(
CesiumMath.toRadians(10.0),
CesiumMath.toRadians(45.0),
10000
);
var flyto = new KmlTourFlyTo(10, "bounce", new KmlLookAt(position, hpr));
var options = flyto.getCameraOptions();
expect(options.duration).toEqual(10);
expect(options.complete).toBeUndefined();
expect(options.easingFunction).toBeUndefined();
expect(options.offset).toBe(hpr);
expect(options.destination).toBeUndefined();
expect(options.orientation).toBeUndefined();
});
it("generates camera options for KmlCamera", function () {
var position = Cartesian3.fromDegrees(40.0, 30.0, 1000);
var hpr = new HeadingPitchRoll(
CesiumMath.toRadians(10.0),
CesiumMath.toRadians(45.0),
0
);
var flyto = new KmlTourFlyTo(10, "bounce", new KmlCamera(position, hpr));
var options = flyto.getCameraOptions();
expect(options.duration).toEqual(10);
expect(options.complete).toBeUndefined();
expect(options.easingFunction).toBeUndefined();
expect(options.offset).toBeUndefined();
expect(options.destination.x).toEqual(position.x);
expect(options.destination.y).toEqual(position.y);
expect(options.destination.z).toEqual(position.z);
expect(options.orientation).toBe(hpr);
});
it("adds activeCallback to options", function () {
var position = Cartesian3.fromDegrees(40.0, 30.0, 1000);
var hpr = new HeadingPitchRange(
CesiumMath.toRadians(10.0),
CesiumMath.toRadians(45.0),
10000
);
var flyto = new KmlTourFlyTo(10, "bounce", new KmlLookAt(position, hpr));
flyto.activeCallback = jasmine.createSpy("activeCallback");
var options = flyto.getCameraOptions();
expect(options.complete).toBeDefined();
options.complete();
expect(options.complete).toHaveBeenCalled();
});
it("calls camera flyTo for KmlCamera", function () {
var position = Cartesian3.fromDegrees(40.0, 30.0, 1000);
var hpr = new HeadingPitchRoll(
CesiumMath.toRadians(10.0),
CesiumMath.toRadians(45.0),
0
);
var flyto = new KmlTourFlyTo(0.01, "bounce", new KmlCamera(position, hpr));
var doneSpy = jasmine.createSpy("cameraDone");
var flyFake = jasmine.createSpy("flyTo").and.callFake(function (options) {
if (options.complete) {
options.complete();
}
});
var fakeCamera = {
flyTo: flyFake,
};
flyto.play(doneSpy, fakeCamera);
return pollToPromise(function () {
return doneSpy.calls.count() > 0;
}).then(function () {
expect(fakeCamera.flyTo).toHaveBeenCalled();
expect(fakeCamera.flyTo.calls.mostRecent().args[0].destination).toBe(
position
);
expect(fakeCamera.flyTo.calls.mostRecent().args[0].orientation).toBe(hpr);
expect(doneSpy).toHaveBeenCalled();
});
});
it("calls camera flyToBoundingSphere for KmlLookAt", function () {
var position = Cartesian3.fromDegrees(40.0, 30.0, 1000);
var hpr = new HeadingPitchRange(
CesiumMath.toRadians(10.0),
CesiumMath.toRadians(45.0),
10000
);
var flyto = new KmlTourFlyTo(0.01, "bounce", new KmlLookAt(position, hpr));
var doneSpy = jasmine.createSpy("cameraDone");
var flyFake = jasmine
.createSpy("flyToBoundingSphere")
.and.callFake(function (sphere, options) {
if (options.complete) {
options.complete();
}
});
var fakeCamera = {
flyToBoundingSphere: flyFake,
};
flyto.play(doneSpy, fakeCamera);
return pollToPromise(function () {
return doneSpy.calls.count() > 0;
}).then(function () {
expect(fakeCamera.flyToBoundingSphere).toHaveBeenCalled();
expect(
fakeCamera.flyToBoundingSphere.calls.mostRecent().args[0].center.x
).toEqual(position.x);
expect(
fakeCamera.flyToBoundingSphere.calls.mostRecent().args[0].center.y
).toEqual(position.y);
expect(
fakeCamera.flyToBoundingSphere.calls.mostRecent().args[0].center.z
).toEqual(position.z);
expect(
fakeCamera.flyToBoundingSphere.calls.mostRecent().args[1].offset
).toBe(hpr);
expect(doneSpy).toHaveBeenCalled();
});
});
});