dwf: monster file re-org. RED BUILD
This commit is contained in:
81
lib/jsUnitMockTimeout.js
Executable file
81
lib/jsUnitMockTimeout.js
Executable file
@@ -0,0 +1,81 @@
|
||||
// Mock setTimeout, clearTimeout
|
||||
// Contributed by Pivotal Computer Systems, www.pivotalsf.com
|
||||
|
||||
var Clock = {
|
||||
timeoutsMade: 0,
|
||||
scheduledFunctions: {},
|
||||
nowMillis: 0,
|
||||
reset: function() {
|
||||
this.scheduledFunctions = {};
|
||||
this.nowMillis = 0;
|
||||
this.timeoutsMade = 0;
|
||||
},
|
||||
tick: function(millis) {
|
||||
var oldMillis = this.nowMillis;
|
||||
var newMillis = oldMillis + millis;
|
||||
this.runFunctionsWithinRange(oldMillis, newMillis);
|
||||
this.nowMillis = newMillis;
|
||||
},
|
||||
runFunctionsWithinRange: function(oldMillis, nowMillis) {
|
||||
var scheduledFunc;
|
||||
var funcsToRun = [];
|
||||
for (var timeoutKey in this.scheduledFunctions) {
|
||||
scheduledFunc = this.scheduledFunctions[timeoutKey];
|
||||
if (scheduledFunc != undefined &&
|
||||
scheduledFunc.runAtMillis >= oldMillis &&
|
||||
scheduledFunc.runAtMillis <= nowMillis) {
|
||||
funcsToRun.push(scheduledFunc);
|
||||
this.scheduledFunctions[timeoutKey] = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if (funcsToRun.length > 0) {
|
||||
funcsToRun.sort(function(a, b) {
|
||||
return a.runAtMillis - b.runAtMillis;
|
||||
});
|
||||
for (var i = 0; i < funcsToRun.length; ++i) {
|
||||
try {
|
||||
this.nowMillis = funcsToRun[i].runAtMillis;
|
||||
funcsToRun[i].funcToCall();
|
||||
if (funcsToRun[i].recurring) {
|
||||
Clock.scheduleFunction(funcsToRun[i].timeoutKey,
|
||||
funcsToRun[i].funcToCall,
|
||||
funcsToRun[i].millis,
|
||||
true);
|
||||
}
|
||||
} catch(e) {
|
||||
}
|
||||
}
|
||||
this.runFunctionsWithinRange(oldMillis, nowMillis);
|
||||
}
|
||||
},
|
||||
scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) {
|
||||
Clock.scheduledFunctions[timeoutKey] = {
|
||||
runAtMillis: Clock.nowMillis + millis,
|
||||
funcToCall: funcToCall,
|
||||
recurring: recurring,
|
||||
timeoutKey: timeoutKey,
|
||||
millis: millis
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
function setTimeout(funcToCall, millis) {
|
||||
Clock.timeoutsMade = Clock.timeoutsMade + 1;
|
||||
Clock.scheduleFunction(Clock.timeoutsMade, funcToCall, millis, false);
|
||||
return Clock.timeoutsMade;
|
||||
}
|
||||
|
||||
function setInterval(funcToCall, millis) {
|
||||
Clock.timeoutsMade = Clock.timeoutsMade + 1;
|
||||
Clock.scheduleFunction(Clock.timeoutsMade, funcToCall, millis, true);
|
||||
return Clock.timeoutsMade;
|
||||
}
|
||||
|
||||
function clearTimeout(timeoutKey) {
|
||||
Clock.scheduledFunctions[timeoutKey] = undefined;
|
||||
}
|
||||
|
||||
function clearInterval(timeoutKey) {
|
||||
Clock.scheduledFunctions[timeoutKey] = undefined;
|
||||
}
|
||||
Reference in New Issue
Block a user