Mock Clock now correctly schedules delayed functions during a 'tick'
This commit is contained in:
@@ -988,8 +988,8 @@ getJasmineRequireObj().DelayedFunctionScheduler = function() {
|
|||||||
|
|
||||||
self.tick = function(millis) {
|
self.tick = function(millis) {
|
||||||
millis = millis || 0;
|
millis = millis || 0;
|
||||||
runFunctionsWithinRange(currentTime, currentTime + millis);
|
|
||||||
currentTime = currentTime + millis;
|
currentTime = currentTime + millis;
|
||||||
|
runFunctionsWithinRange(currentTime - millis, currentTime);
|
||||||
};
|
};
|
||||||
|
|
||||||
self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) {
|
self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) {
|
||||||
|
|||||||
@@ -324,6 +324,24 @@ describe("Clock (acceptance)", function() {
|
|||||||
expect(delayedFn1).toHaveBeenCalled();
|
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() {
|
it("calls the global clearTimeout correctly when not installed", function() {
|
||||||
var delayedFunctionScheduler = jasmine.createSpyObj('delayedFunctionScheduler', ['clearTimeout']),
|
var delayedFunctionScheduler = jasmine.createSpyObj('delayedFunctionScheduler', ['clearTimeout']),
|
||||||
global = jasmine.getGlobal(),
|
global = jasmine.getGlobal(),
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ getJasmineRequireObj().DelayedFunctionScheduler = function() {
|
|||||||
|
|
||||||
self.tick = function(millis) {
|
self.tick = function(millis) {
|
||||||
millis = millis || 0;
|
millis = millis || 0;
|
||||||
runFunctionsWithinRange(currentTime, currentTime + millis);
|
|
||||||
currentTime = currentTime + millis;
|
currentTime = currentTime + millis;
|
||||||
|
runFunctionsWithinRange(currentTime - millis, currentTime);
|
||||||
};
|
};
|
||||||
|
|
||||||
self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) {
|
self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) {
|
||||||
|
|||||||
Reference in New Issue
Block a user