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; }); });