/**
|
* @license
|
* Copyright 2018 Google LLC. All Rights Reserved.
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
* =============================================================================
|
*/
|
import * as tf from './index';
|
import { ALL_ENVS, describeWithFlags } from './jasmine_util';
|
function isFloat(num) {
|
return num % 1 !== 0;
|
}
|
describeWithFlags('nextFrame', ALL_ENVS, () => {
|
it('basic usage', async () => {
|
const t0 = tf.util.now();
|
await tf.nextFrame();
|
const t1 = tf.util.now();
|
// tf.nextFrame may take no more than 1ms to complete, so this test is
|
// meaningful only if the precision of tf.util.now is better than 1ms.
|
// After version 59, the precision of Firefox's tf.util.now becomes 2ms by
|
// default for security issues, https://caniuse.com/?search=performance.now.
|
// Then, this test is dropped for Firefox, even though it could be
|
// set to better precision through browser setting,
|
// https://github.com/lumen/threading-benchmarks/issues/7.
|
if (isFloat(t0) || isFloat(t1)) {
|
// If t0 or t1 have decimal point, it means the precision is better than
|
// 1ms.
|
expect(t1).toBeGreaterThan(t0);
|
}
|
});
|
it('does not block timers', async () => {
|
let flag = false;
|
setTimeout(() => {
|
flag = true;
|
}, 50);
|
const t0 = tf.util.now();
|
expect(flag).toBe(false);
|
while (tf.util.now() - t0 < 1000 && !flag) {
|
await tf.nextFrame();
|
}
|
expect(flag).toBe(true);
|
});
|
});
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlcl91dGlsX3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZmpzLWNvcmUvc3JjL2Jyb3dzZXJfdXRpbF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sRUFBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxTQUFTLE9BQU8sQ0FBQyxHQUFXO0lBQzFCLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELGlCQUFpQixDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO0lBQzVDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXpCLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsMEVBQTBFO1FBQzFFLDRFQUE0RTtRQUM1RSxrRUFBa0U7UUFDbEUsbURBQW1EO1FBQ25ELDBEQUEwRDtRQUMxRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDOUIsd0VBQXdFO1lBQ3hFLE9BQU87WUFDUCxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2QsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3pDLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMTggR29vZ2xlIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqL1xuXG5pbXBvcnQgKiBhcyB0ZiBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7QUxMX0VOVlMsIGRlc2NyaWJlV2l0aEZsYWdzfSBmcm9tICcuL2phc21pbmVfdXRpbCc7XG5cbmZ1bmN0aW9uIGlzRmxvYXQobnVtOiBudW1iZXIpIHtcbiAgcmV0dXJuIG51bSAlIDEgIT09IDA7XG59XG5cbmRlc2NyaWJlV2l0aEZsYWdzKCduZXh0RnJhbWUnLCBBTExfRU5WUywgKCkgPT4ge1xuICBpdCgnYmFzaWMgdXNhZ2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdDAgPSB0Zi51dGlsLm5vdygpO1xuICAgIGF3YWl0IHRmLm5leHRGcmFtZSgpO1xuICAgIGNvbnN0IHQxID0gdGYudXRpbC5ub3coKTtcblxuICAgIC8vIHRmLm5leHRGcmFtZSBtYXkgdGFrZSBubyBtb3JlIHRoYW4gMW1zIHRvIGNvbXBsZXRlLCBzbyB0aGlzIHRlc3QgaXNcbiAgICAvLyBtZWFuaW5nZnVsIG9ubHkgaWYgdGhlIHByZWNpc2lvbiBvZiB0Zi51dGlsLm5vdyBpcyBiZXR0ZXIgdGhhbiAxbXMuXG4gICAgLy8gQWZ0ZXIgdmVyc2lvbiA1OSwgdGhlIHByZWNpc2lvbiBvZiBGaXJlZm94J3MgdGYudXRpbC5ub3cgYmVjb21lcyAybXMgYnlcbiAgICAvLyBkZWZhdWx0IGZvciBzZWN1cml0eSBpc3N1ZXMsIGh0dHBzOi8vY2FuaXVzZS5jb20vP3NlYXJjaD1wZXJmb3JtYW5jZS5ub3cuXG4gICAgLy8gVGhlbiwgdGhpcyB0ZXN0IGlzIGRyb3BwZWQgZm9yIEZpcmVmb3gsIGV2ZW4gdGhvdWdoIGl0IGNvdWxkIGJlXG4gICAgLy8gc2V0IHRvIGJldHRlciBwcmVjaXNpb24gdGhyb3VnaCBicm93c2VyIHNldHRpbmcsXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2x1bWVuL3RocmVhZGluZy1iZW5jaG1hcmtzL2lzc3Vlcy83LlxuICAgIGlmIChpc0Zsb2F0KHQwKSB8fCBpc0Zsb2F0KHQxKSkge1xuICAgICAgLy8gSWYgdDAgb3IgdDEgaGF2ZSBkZWNpbWFsIHBvaW50LCBpdCBtZWFucyB0aGUgcHJlY2lzaW9uIGlzIGJldHRlciB0aGFuXG4gICAgICAvLyAxbXMuXG4gICAgICBleHBlY3QodDEpLnRvQmVHcmVhdGVyVGhhbih0MCk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnZG9lcyBub3QgYmxvY2sgdGltZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBmbGFnID0gZmFsc2U7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBmbGFnID0gdHJ1ZTtcbiAgICB9LCA1MCk7XG4gICAgY29uc3QgdDAgPSB0Zi51dGlsLm5vdygpO1xuICAgIGV4cGVjdChmbGFnKS50b0JlKGZhbHNlKTtcbiAgICB3aGlsZSAodGYudXRpbC5ub3coKSAtIHQwIDwgMTAwMCAmJiAhZmxhZykge1xuICAgICAgYXdhaXQgdGYubmV4dEZyYW1lKCk7XG4gICAgfVxuICAgIGV4cGVjdChmbGFnKS50b0JlKHRydWUpO1xuICB9KTtcbn0pO1xuIl19
|