make DelayedFunctionScheduler update the mockDate

This commit is contained in:
Andre Wiggins
2015-11-20 03:45:57 -08:00
parent b3f69852c1
commit c8b212f278
4 changed files with 53 additions and 6 deletions

View File

@@ -6,11 +6,11 @@ getJasmineRequireObj().DelayedFunctionScheduler = function() {
var currentTime = 0;
var delayedFnCount = 0;
self.tick = function(millis) {
self.tick = function(millis, mockDate) {
millis = millis || 0;
var endTime = currentTime + millis;
runScheduledFunctions(endTime);
runScheduledFunctions(endTime, mockDate);
currentTime = endTime;
};
@@ -113,13 +113,17 @@ getJasmineRequireObj().DelayedFunctionScheduler = function() {
}
}
function runScheduledFunctions(endTime) {
function runScheduledFunctions(endTime, mockDate) {
if (scheduledLookup.length === 0 || scheduledLookup[0] > endTime) {
updateMockDate(mockDate, endTime);
return;
}
do {
currentTime = scheduledLookup.shift();
var newCurrentTime = scheduledLookup.shift();
updateMockDate(mockDate, newCurrentTime);
currentTime = newCurrentTime;
var funcsToRun = scheduledFunctions[currentTime];
delete scheduledFunctions[currentTime];
@@ -139,6 +143,13 @@ getJasmineRequireObj().DelayedFunctionScheduler = function() {
currentTime !== endTime &&
scheduledLookup[0] <= endTime);
}
function updateMockDate(mockDate, newCurrentTime) {
if (mockDate) {
var millis = newCurrentTime - currentTime;
mockDate.tick(millis);
}
}
}
return DelayedFunctionScheduler;