Mock Clock now correctly schedules delayed functions during a 'tick'

This commit is contained in:
Sheel Choksi
2013-09-02 18:50:17 -07:00
parent fc409f39a1
commit a442acb8aa
3 changed files with 20 additions and 2 deletions

View File

@@ -988,8 +988,8 @@ getJasmineRequireObj().DelayedFunctionScheduler = function() {
self.tick = function(millis) {
millis = millis || 0;
runFunctionsWithinRange(currentTime, currentTime + millis);
currentTime = currentTime + millis;
runFunctionsWithinRange(currentTime - millis, currentTime);
};
self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) {

View File

@@ -324,6 +324,24 @@ describe("Clock (acceptance)", function() {
expect(delayedFn1).toHaveBeenCalled();
});
it("correctly schedules functions while the Clock is advancing", function() {
var delayedFn1 = jasmine.createSpy('delayedFn1'),
delayedFn2 = jasmine.createSpy('delayedFn2'),
delayedFunctionScheduler = new j$.DelayedFunctionScheduler(),
clock = new j$.Clock({setTimeout: function() {}}, delayedFunctionScheduler);
delayedFn1.and.callFake(function() { clock.setTimeout(delayedFn2, 0); });
clock.install();
clock.setTimeout(delayedFn1, 5);
clock.tick(5);
expect(delayedFn1).toHaveBeenCalled();
expect(delayedFn2).not.toHaveBeenCalled();
clock.tick();
expect(delayedFn2).toHaveBeenCalled();
});
it("calls the global clearTimeout correctly when not installed", function() {
var delayedFunctionScheduler = jasmine.createSpyObj('delayedFunctionScheduler', ['clearTimeout']),
global = jasmine.getGlobal(),

View File

@@ -7,8 +7,8 @@ getJasmineRequireObj().DelayedFunctionScheduler = function() {
self.tick = function(millis) {
millis = millis || 0;
runFunctionsWithinRange(currentTime, currentTime + millis);
currentTime = currentTime + millis;
runFunctionsWithinRange(currentTime - millis, currentTime);
};
self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) {