aboutsummaryrefslogtreecommitdiff
path: root/test/js
diff options
context:
space:
mode:
Diffstat (limited to 'test/js')
-rw-r--r--test/js/web/timers/setInterval.test.js14
-rw-r--r--test/js/web/timers/setTimeout.test.js59
2 files changed, 73 insertions, 0 deletions
diff --git a/test/js/web/timers/setInterval.test.js b/test/js/web/timers/setInterval.test.js
index 7b03afba5..b4215eef2 100644
--- a/test/js/web/timers/setInterval.test.js
+++ b/test/js/web/timers/setInterval.test.js
@@ -59,3 +59,17 @@ it("async setInterval", async () => {
});
});
});
+
+it("setInterval if refreshed before run, should reschedule to run later", done => {
+ let start = Date.now();
+ let timer = setInterval(() => {
+ let end = Date.now();
+ clearInterval(timer);
+ expect(end - start).toBeGreaterThanOrEqual(150);
+ done();
+ }, 100);
+
+ setTimeout(() => {
+ timer.refresh();
+ }, 50);
+});
diff --git a/test/js/web/timers/setTimeout.test.js b/test/js/web/timers/setTimeout.test.js
index 88472adc7..dbe89dea8 100644
--- a/test/js/web/timers/setTimeout.test.js
+++ b/test/js/web/timers/setTimeout.test.js
@@ -171,3 +171,62 @@ it.skip("order of setTimeouts", done => {
setTimeout(maybeDone(() => nums.push(4), 1));
Promise.resolve().then(maybeDone(() => nums.push(1)));
});
+
+it("setTimeout should refresh N times", done => {
+ let count = 0;
+ let timer = setTimeout(() => {
+ count++;
+ timer.refresh();
+ }, 50);
+
+ setTimeout(() => {
+ clearTimeout(timer);
+ expect(count).toBeGreaterThanOrEqual(5);
+ done();
+ }, 300);
+});
+
+it("setTimeout if refreshed before run, should reschedule to run later", done => {
+ let start = Date.now();
+ let timer = setTimeout(() => {
+ let end = Date.now();
+ expect(end - start).toBeGreaterThanOrEqual(150);
+ done();
+ }, 100);
+
+ setTimeout(() => {
+ timer.refresh();
+ }, 50);
+});
+
+it("setTimeout should refresh after already been run", done => {
+ let count = 0;
+ let timer = setTimeout(() => {
+ count++;
+ }, 50);
+
+ setTimeout(() => {
+ timer.refresh();
+ }, 100);
+
+ setTimeout(() => {
+ expect(count).toBe(2);
+ done();
+ }, 300);
+});
+
+it("setTimeout should not refresh after clearTimeout", done => {
+ let count = 0;
+ let timer = setTimeout(() => {
+ count++;
+ }, 50);
+
+ clearTimeout(timer);
+
+ timer.refresh();
+
+ setTimeout(() => {
+ expect(count).toBe(0);
+ done();
+ }, 100);
+});