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.
59 lines
1.6 KiB
JavaScript
59 lines
1.6 KiB
JavaScript
import { cancelAnimationFrame } from "../../Source/Cesium.js";
|
|
import { requestAnimationFrame } from "../../Source/Cesium.js";
|
|
import { when } from "../../Source/Cesium.js";
|
|
|
|
describe("Core/requestAnimationFrame", function () {
|
|
it("calls the callback", function () {
|
|
var deferred = when.defer();
|
|
var requestID = requestAnimationFrame(function () {
|
|
deferred.resolve();
|
|
});
|
|
expect(requestID).toBeDefined();
|
|
return deferred.promise;
|
|
});
|
|
|
|
it("provides a timestamp that increases each frame", function () {
|
|
var deferred = when.defer();
|
|
|
|
var callbackTimestamps = [];
|
|
|
|
function callback(timestamp) {
|
|
callbackTimestamps.push(timestamp);
|
|
|
|
if (callbackTimestamps.length < 3) {
|
|
requestAnimationFrame(callback);
|
|
} else {
|
|
expect(callbackTimestamps[0]).toBeLessThanOrEqualTo(
|
|
callbackTimestamps[1]
|
|
);
|
|
expect(callbackTimestamps[1]).toBeLessThanOrEqualTo(
|
|
callbackTimestamps[2]
|
|
);
|
|
deferred.resolve();
|
|
}
|
|
}
|
|
|
|
requestAnimationFrame(callback);
|
|
|
|
return deferred.promise;
|
|
});
|
|
|
|
it("can cancel a callback", function () {
|
|
var deferred = when.defer();
|
|
|
|
var shouldNotBeCalled = jasmine.createSpy("shouldNotBeCalled");
|
|
|
|
var requestID = requestAnimationFrame(shouldNotBeCalled);
|
|
cancelAnimationFrame(requestID);
|
|
|
|
// schedule and wait for another callback
|
|
requestAnimationFrame(function () {
|
|
// make sure cancelled callback didn't run
|
|
expect(shouldNotBeCalled).not.toHaveBeenCalled();
|
|
deferred.resolve();
|
|
});
|
|
|
|
return deferred.promise;
|
|
});
|
|
});
|