From 53529bdc9a6c911cd6545c6cc1e9297ef3388cb2 Mon Sep 17 00:00:00 2001 From: Gregg Van Hove Date: Fri, 19 Jan 2018 17:47:28 -0800 Subject: [PATCH] Clear timeouts when starting to process a milli instead of at the end - Fixes #1482 --- spec/core/DelayedFunctionSchedulerSpec.js | 16 ++++++++++++++++ src/core/DelayedFunctionScheduler.js | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/spec/core/DelayedFunctionSchedulerSpec.js b/spec/core/DelayedFunctionSchedulerSpec.js index fa846d6f..f04d8f39 100644 --- a/spec/core/DelayedFunctionSchedulerSpec.js +++ b/spec/core/DelayedFunctionSchedulerSpec.js @@ -254,6 +254,22 @@ describe("DelayedFunctionScheduler", function() { expect(fn.calls.count()).toBe(1); }); + it("does not remove a function that hasn't been added yet", function() { + var scheduler = new jasmineUnderTest.DelayedFunctionScheduler(), + fn = jasmine.createSpy('fn'), + fnDelay = 10, + timeoutKey; + + scheduler.removeFunctionWithId('foo'); + scheduler.scheduleFunction(fn, fnDelay, [], false, 'foo'); + + expect(fn).not.toHaveBeenCalled(); + + scheduler.tick(fnDelay + 1); + + expect(fn).toHaveBeenCalled(); + }); + it("updates the mockDate per scheduled time", function () { var scheduler = new jasmineUnderTest.DelayedFunctionScheduler(), tickDate = jasmine.createSpy('tickDate'); diff --git a/src/core/DelayedFunctionScheduler.js b/src/core/DelayedFunctionScheduler.js index 62cf5dc9..5bceb48e 100644 --- a/src/core/DelayedFunctionScheduler.js +++ b/src/core/DelayedFunctionScheduler.js @@ -124,6 +124,7 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) { } do { + deletedKeys = []; var newCurrentTime = scheduledLookup.shift(); tickDate(newCurrentTime - currentTime); @@ -146,7 +147,6 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) { } funcToRun.funcToCall.apply(null, funcToRun.params || []); }); - deletedKeys = []; } while (scheduledLookup.length > 0 && // checking first if we're out of time prevents setTimeout(0) // scheduled in a funcToRun from forcing an extra iteration