forked from regl-project/regl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathframe.js
53 lines (43 loc) · 1.14 KB
/
frame.js
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
var createContext = require('./util/create-context')
var createREGL = require('../regl')
var tape = require('tape')
tape('raf cancel', function (t) {
var gl = createContext(5, 5)
var regl = createREGL(gl)
var prevTime = -Infinity
var call0 = 0
var cancel0 = false
var frame0 = regl.frame(function (context) {
call0 += 1
t.equals(context.tick, call0, 'tick count ok (frame 0)')
})
var call1 = 0
var frame1 = regl.frame(function (context) {
call1 += 1
t.ok(context.time > prevTime, 'timer ok')
t.equals(context.tick, call1, 'tick count ok (frame 1)')
prevTime = context.time
if (call0 === 3 && !cancel0) {
frame0.cancel()
cancel0 = true
}
if (call1 === 5) {
frame1.cancel()
setTimeout(checkFrames, 300)
}
})
function checkFrames () {
t.equals(call0, 3, 'frame 0 cancelled ok')
t.equals(call1, 5, 'frame 1 cancelled ok')
t.throws(function () {
frame0.cancel()
}, /\(regl\)/, 'double cancellation throws')
done()
}
function done () {
regl.destroy()
t.equals(gl.getError(), 0, 'error ok')
createContext.destroy(gl)
t.end()
}
})