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.
408 lines
11 KiB
JavaScript
408 lines
11 KiB
JavaScript
import { Color } from "../../Source/Cesium.js";
|
|
import { EasingFunction } from "../../Source/Cesium.js";
|
|
import { TweenCollection } from "../../Source/Cesium.js";
|
|
|
|
describe(
|
|
"Scene/TweenCollection",
|
|
function () {
|
|
it("add() adds a tween", function () {
|
|
var startObject = {
|
|
value: 0.0,
|
|
};
|
|
var stopObject = {
|
|
value: 1.0,
|
|
};
|
|
function update(value) {}
|
|
function complete() {}
|
|
function cancel() {}
|
|
|
|
var tweens = new TweenCollection();
|
|
var tween = tweens.add({
|
|
startObject: startObject,
|
|
stopObject: stopObject,
|
|
duration: 1.0,
|
|
delay: 0.5,
|
|
easingFunction: EasingFunction.QUADRATIC_IN,
|
|
update: update,
|
|
complete: complete,
|
|
cancel: cancel,
|
|
});
|
|
|
|
expect(tween.startObject).toEqual(startObject);
|
|
expect(tween.stopObject).toEqual(stopObject);
|
|
expect(tween.duration).toEqual(1.0);
|
|
expect(tween.delay).toEqual(0.5);
|
|
expect(tween.easingFunction).toEqual(EasingFunction.QUADRATIC_IN);
|
|
expect(tween.update).toBe(update);
|
|
expect(tween.complete).toBe(complete);
|
|
expect(tween.cancel).toBe(cancel);
|
|
});
|
|
|
|
it("add() adds a tween with defaults", function () {
|
|
var startObject = {
|
|
value: 0.0,
|
|
};
|
|
var stopObject = {
|
|
value: 1.0,
|
|
};
|
|
|
|
var tweens = new TweenCollection();
|
|
var tween = tweens.add({
|
|
startObject: startObject,
|
|
stopObject: stopObject,
|
|
duration: 1.0,
|
|
});
|
|
|
|
expect(tween.startObject).toEqual(startObject);
|
|
expect(tween.stopObject).toEqual(stopObject);
|
|
expect(tween.duration).toEqual(1.0);
|
|
expect(tween.delay).toEqual(0.0);
|
|
expect(tween.easingFunction).toEqual(EasingFunction.LINEAR_NONE);
|
|
expect(tween.update).not.toBeDefined();
|
|
expect(tween.complete).not.toBeDefined();
|
|
expect(tween.cancel).not.toBeDefined();
|
|
});
|
|
|
|
it("add() adds with a duration of zero", function () {
|
|
var complete = jasmine.createSpy("complete");
|
|
|
|
var tweens = new TweenCollection();
|
|
tweens.add({
|
|
startObject: {},
|
|
stopObject: {},
|
|
duration: 0.0,
|
|
complete: complete,
|
|
});
|
|
|
|
expect(tweens.length).toEqual(0);
|
|
expect(complete).toHaveBeenCalled();
|
|
});
|
|
|
|
it("add() throws without startObject", function () {
|
|
var tweens = new TweenCollection();
|
|
expect(function () {
|
|
tweens.add({
|
|
stopObject: {},
|
|
duration: 1.0,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("add() throws without stopObject", function () {
|
|
var tweens = new TweenCollection();
|
|
expect(function () {
|
|
tweens.add({
|
|
startObject: {},
|
|
duration: 1.0,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("add() throws without duration", function () {
|
|
var tweens = new TweenCollection();
|
|
expect(function () {
|
|
tweens.add({
|
|
startObject: {},
|
|
stopObject: {},
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("add() throws with negative duration", function () {
|
|
var tweens = new TweenCollection();
|
|
expect(function () {
|
|
tweens.add({
|
|
startObject: {},
|
|
stopObject: {},
|
|
duration: -1.0,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("cancelTween() cancels a tween", function () {
|
|
var cancel = jasmine.createSpy("cancel");
|
|
|
|
var tweens = new TweenCollection();
|
|
var tween = tweens.add({
|
|
startObject: {},
|
|
stopObject: {},
|
|
duration: 1.0,
|
|
cancel: cancel,
|
|
});
|
|
|
|
expect(tweens.length).toEqual(1);
|
|
|
|
tween.cancelTween();
|
|
expect(cancel).toHaveBeenCalled();
|
|
expect(tweens.length).toEqual(0);
|
|
});
|
|
|
|
it("remove() removes a tween", function () {
|
|
var cancel = jasmine.createSpy("cancel");
|
|
|
|
var tweens = new TweenCollection();
|
|
var tween = tweens.add({
|
|
startObject: {},
|
|
stopObject: {},
|
|
duration: 1.0,
|
|
cancel: cancel,
|
|
});
|
|
|
|
expect(tweens.length).toEqual(1);
|
|
expect(tweens.contains(tween)).toEqual(true);
|
|
|
|
var b = tweens.remove(tween);
|
|
expect(b).toEqual(true);
|
|
expect(tweens.length).toEqual(0);
|
|
expect(tweens.contains(tween)).toEqual(false);
|
|
expect(cancel).toHaveBeenCalled();
|
|
|
|
b = tweens.remove(tween);
|
|
expect(b).toEqual(false);
|
|
});
|
|
|
|
it("removeAll() removes a tween", function () {
|
|
var cancel = jasmine.createSpy("cancel");
|
|
|
|
var tweens = new TweenCollection();
|
|
tweens.add({
|
|
startObject: {},
|
|
stopObject: {},
|
|
duration: 1.0,
|
|
cancel: cancel,
|
|
});
|
|
tweens.add({
|
|
startObject: {},
|
|
stopObject: {},
|
|
duration: 1.0,
|
|
cancel: cancel,
|
|
});
|
|
|
|
expect(tweens.length).toEqual(2);
|
|
|
|
tweens.removeAll();
|
|
expect(tweens.length).toEqual(0);
|
|
expect(cancel.calls.count()).toEqual(2);
|
|
});
|
|
|
|
it("contains() throws without an index", function () {
|
|
var tweens = new TweenCollection();
|
|
expect(function () {
|
|
return tweens.get();
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("get() returns a tween", function () {
|
|
var tweens = new TweenCollection();
|
|
var tween = tweens.add({
|
|
startObject: {},
|
|
stopObject: {},
|
|
duration: 1.0,
|
|
});
|
|
var anotherTween = tweens.add({
|
|
startObject: {},
|
|
stopObject: {},
|
|
duration: 1.0,
|
|
});
|
|
|
|
expect(tweens.get(0)).toBe(tween);
|
|
expect(tweens.get(1)).toBe(anotherTween);
|
|
});
|
|
|
|
it("update() animates a tween", function () {
|
|
var update = jasmine.createSpy("update");
|
|
var complete = jasmine.createSpy("complete");
|
|
|
|
var startObject = {
|
|
value: 0.0,
|
|
};
|
|
var stopObject = {
|
|
value: 1.0,
|
|
};
|
|
|
|
var tweens = new TweenCollection();
|
|
tweens.add({
|
|
startObject: startObject,
|
|
stopObject: stopObject,
|
|
duration: 1.0,
|
|
update: update,
|
|
complete: complete,
|
|
});
|
|
expect(tweens.length).toEqual(1);
|
|
|
|
tweens.update(0.0);
|
|
expect(update).toHaveBeenCalledWith({ value: 0.0 });
|
|
expect(startObject.value).toEqual(0.0);
|
|
|
|
tweens.update(0.5);
|
|
expect(update).toHaveBeenCalledWith({ value: 0.5 });
|
|
expect(startObject.value).toEqual(0.5);
|
|
|
|
tweens.update(1.0);
|
|
expect(update).toHaveBeenCalledWith({ value: 1.0 });
|
|
expect(startObject.value).toEqual(1.0);
|
|
|
|
expect(complete).toHaveBeenCalled();
|
|
expect(tweens.length).toEqual(0);
|
|
});
|
|
|
|
it("update() animations a tween created with addProperty()", function () {
|
|
var tweens = new TweenCollection();
|
|
var object = {
|
|
property: 0.0,
|
|
};
|
|
tweens.addProperty({
|
|
object: object,
|
|
property: "property",
|
|
startValue: 0.0,
|
|
stopValue: 1.0,
|
|
duration: 1.0,
|
|
});
|
|
tweens.update(0.0);
|
|
tweens.update(0.5);
|
|
expect(object.property).toEqual(0.5);
|
|
});
|
|
|
|
it("addProperty() throws without an object", function () {
|
|
var tweens = new TweenCollection();
|
|
expect(function () {
|
|
return tweens.addProperty({
|
|
property: "property",
|
|
startValue: 0.0,
|
|
stopValue: 1.0,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("addProperty() throws without a property", function () {
|
|
var tweens = new TweenCollection();
|
|
var object = {
|
|
property: 0.0,
|
|
};
|
|
expect(function () {
|
|
return tweens.addProperty({
|
|
object: object,
|
|
startValue: 0.0,
|
|
stopValue: 1.0,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("addProperty() throws when object does not contain property", function () {
|
|
var tweens = new TweenCollection();
|
|
var object = {
|
|
property: 0.0,
|
|
};
|
|
expect(function () {
|
|
return tweens.addProperty({
|
|
object: object,
|
|
property: "another-property",
|
|
startValue: 0.0,
|
|
stopValue: 1.0,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("addProperty() throws without a startValue", function () {
|
|
var tweens = new TweenCollection();
|
|
var object = {
|
|
property: 0.0,
|
|
};
|
|
expect(function () {
|
|
return tweens.addProperty({
|
|
object: object,
|
|
property: "property",
|
|
stopValue: 1.0,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("addProperty() throws without a stopValue", function () {
|
|
var tweens = new TweenCollection();
|
|
var object = {
|
|
property: 0.0,
|
|
};
|
|
expect(function () {
|
|
return tweens.addProperty({
|
|
object: object,
|
|
property: "property",
|
|
startValue: 0.0,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("update() animations a tween created with addAlpha()", function () {
|
|
var tweens = new TweenCollection();
|
|
var material = {
|
|
uniforms: {
|
|
lightColor: new Color(),
|
|
darkColor: new Color(),
|
|
},
|
|
};
|
|
tweens.addAlpha({
|
|
material: material,
|
|
duration: 1.0,
|
|
});
|
|
tweens.update(0.0);
|
|
tweens.update(0.5);
|
|
expect(material.uniforms.lightColor.alpha).toEqual(0.5);
|
|
expect(material.uniforms.darkColor.alpha).toEqual(0.5);
|
|
});
|
|
|
|
it("addAlpha() throws without a material", function () {
|
|
var tweens = new TweenCollection();
|
|
expect(function () {
|
|
return tweens.addAlpha({});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("addAlpha() throws without a material with color uniforms", function () {
|
|
var tweens = new TweenCollection();
|
|
var material = {
|
|
uniforms: {},
|
|
};
|
|
expect(function () {
|
|
return tweens.addAlpha({
|
|
material: material,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("update() animations a tween created with addOffsetIncrement()", function () {
|
|
var tweens = new TweenCollection();
|
|
var material = {
|
|
uniforms: {
|
|
offset: 0.0,
|
|
},
|
|
};
|
|
tweens.addOffsetIncrement({
|
|
material: material,
|
|
duration: 1.0,
|
|
});
|
|
tweens.update(0.0);
|
|
tweens.update(0.5);
|
|
expect(material.uniforms.offset).toEqual(0.5);
|
|
});
|
|
|
|
it("addOffsetIncrement() throws without a material", function () {
|
|
var tweens = new TweenCollection();
|
|
expect(function () {
|
|
return tweens.addOffsetIncrement({});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("addOffsetIncrement() throws without a material with an offset uniform", function () {
|
|
var tweens = new TweenCollection();
|
|
var material = {
|
|
uniforms: {},
|
|
};
|
|
expect(function () {
|
|
return tweens.addOffsetIncrement({
|
|
material: material,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
},
|
|
"WebGL"
|
|
);
|