yzt
2023-05-26 2f70f6727314edd84d8ec2bfe3ce832803f1ea77
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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;
  });
});