var imported = ChromeUtils.importESModule( "resource://gre/modules/Timer.sys.mjs"
);
add_task(async function test_setTimeout() {
let timeout1 = imported.setTimeout(
() => do_throw("Should not be called"),
100
); Assert.equal(typeof timeout1, "number", "setTimeout returns a number"); Assert.greater(timeout1, 0, "setTimeout returns a positive number");
imported.clearTimeout(timeout1);
await new Promise(resolve => {
let timeout2 = imported.setTimeout(
(param1, param2) => { Assert.ok(true, "Should be called"); Assert.equal(param1, 5, "first parameter is correct"); Assert.equal(param2, "test", "second parameter is correct");
resolve();
},
100,
5, "test"
);
Assert.equal(typeof timeout2, "number", "setTimeout returns a number"); Assert.greater(timeout2, 0, "setTimeout returns a positive number"); Assert.notEqual(
timeout1,
timeout2, "Calling setTimeout again returns a different value"
);
});
});
add_task(async function test_setInterval() {
let interval1 = imported.setInterval(
() => do_throw("Should not be called!"),
100
); Assert.equal(typeof interval1, "number", "setInterval returns a number"); Assert.greater(interval1, 0, "setTimeout returns a positive number");
imported.clearInterval(interval1);
const EXPECTED_CALLS = 5;
let calls = 0;
await new Promise(resolve => {
let interval2 = imported.setInterval(
(param1, param2) => { Assert.ok(true, "Should be called"); Assert.equal(param1, 15, "first parameter is correct"); Assert.equal(param2, "hola", "second parameter is correct"); if (calls >= EXPECTED_CALLS) {
imported.clearInterval(interval2);
resolve();
}
calls++;
},
100,
15, "hola"
);
});
});
add_task(async function test_setTimeoutNonFunction() { Assert.throws(() => {
imported.setTimeout({}, 0);
}, /callback is not a function in setTimeout/);
});
add_task(async function test_setIntervalNonFunction() { Assert.throws(() => {
imported.setInterval({}, 0);
}, /callback is not a function in setInterval/);
});
add_task(async function test_setTimeoutWithTargetNonFunction() { Assert.throws(() => {
imported.setTimeoutWithTarget({}, 0);
}, /callback is not a function in setTimeout/);
});
add_task(async function test_setIntervalWithTargetNonFunction() { Assert.throws(() => {
imported.setIntervalWithTarget({}, 0);
}, /callback is not a function in setInterval/);
});
add_task(async function test_requestIdleCallback() {
let request1 = imported.requestIdleCallback(() =>
do_throw("Should not be called")
); Assert.equal( typeof request1, "number", "requestIdleCallback returns a number"
); Assert.greater(request1, 0, "setTimeout returns a positive number");
imported.cancelIdleCallback(request1);
await new Promise(resolve => {
let request2 = imported.requestIdleCallback(
deadline => { Assert.ok(true, "Should be called"); Assert.equal( typeof deadline.didTimeout, "boolean", "deadline parameter has .didTimeout property"
); Assert.equal( typeof deadline.timeRemaining(), "number", "deadline parameter has .timeRemaining() function"
);
resolve();
},
{ timeout: 100 }
);
Assert.equal( typeof request2, "number", "requestIdleCallback returns a number"
); Assert.greater(
request2,
0, "requestIdleCallback returns a positive number"
); Assert.notEqual(
request1,
request2, "Calling requestIdleCallback again returns a different value"
);
});
});
Messung V0.5
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.