Вход Регистрация
Файл: framework/thirdparty/jasmine/src/mock-timeout.js
Строк: 301
<?php
// Mock setTimeout, clearTimeout
// Contributed by Pivotal Computer Systems, www.pivotalsf.com

jasmine.FakeTimer = function() {
  
this.reset();

  var 
self this;
  
self.setTimeout = function(funcToCallmillis) {
    
self.timeoutsMade++;
    
self.scheduleFunction(self.timeoutsMadefuncToCallmillisfalse);
    return 
self.timeoutsMade;
  };

  
self.setInterval = function(funcToCallmillis) {
    
self.timeoutsMade++;
    
self.scheduleFunction(self.timeoutsMadefuncToCallmillistrue);
    return 
self.timeoutsMade;
  };

  
self.clearTimeout = function(timeoutKey) {
    
self.scheduledFunctions[timeoutKey] = jasmine.undefined;
  };

  
self.clearInterval = function(timeoutKey) {
    
self.scheduledFunctions[timeoutKey] = jasmine.undefined;
  };

};

jasmine.FakeTimer.prototype.reset = function() {
  
this.timeoutsMade 0;
  
this.scheduledFunctions = {};
  
this.nowMillis 0;
};

jasmine.FakeTimer.prototype.tick = function(millis) {
  var 
oldMillis this.nowMillis;
  var 
newMillis oldMillis millis;
  
this.runFunctionsWithinRange(oldMillisnewMillis);
  
this.nowMillis newMillis;
};

jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillisnowMillis) {
  var 
scheduledFunc;
  var 
funcsToRun = [];
  for (var 
timeoutKey in this.scheduledFunctions) {
    
scheduledFunc this.scheduledFunctions[timeoutKey];
    if (
scheduledFunc != jasmine.undefined &&
        
scheduledFunc.runAtMillis >= oldMillis &&
        
scheduledFunc.runAtMillis <= nowMillis) {
      
funcsToRun.push(scheduledFunc);
      
this.scheduledFunctions[timeoutKey] = jasmine.undefined;
    }
  }

  if (
funcsToRun.length 0) {
    
funcsToRun.sort(function(ab) {
      return 
a.runAtMillis b.runAtMillis;
    });
    for (var 
0funcsToRun.length; ++i) {
      try {
        var 
funcToRun funcsToRun[i];
        
this.nowMillis funcToRun.runAtMillis;
        
funcToRun.funcToCall();
        if (
funcToRun.recurring) {
          
this.scheduleFunction(funcToRun.timeoutKey,
              
funcToRun.funcToCall,
              
funcToRun.millis,
              
true);
        }
      } catch(
e) {
      }
    }
    
this.runFunctionsWithinRange(oldMillisnowMillis);
  }
};

jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKeyfuncToCallmillisrecurring) {
  
this.scheduledFunctions[timeoutKey] = {
    
runAtMillisthis.nowMillis millis,
    
funcToCallfuncToCall,
    
recurringrecurring,
    
timeoutKeytimeoutKey,
    
millismillis
  
};
};

/**
 * @namespace
 */
jasmine.Clock = {
  
defaultFakeTimer: new jasmine.FakeTimer(),

  
reset: function() {
    
jasmine.Clock.assertInstalled();
    
jasmine.Clock.defaultFakeTimer.reset();
  },

  
tick: function(millis) {
    
jasmine.Clock.assertInstalled();
    
jasmine.Clock.defaultFakeTimer.tick(millis);
  },

  
runFunctionsWithinRange: function(oldMillisnowMillis) {
    
jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillisnowMillis);
  },

  
scheduleFunction: function(timeoutKeyfuncToCallmillisrecurring) {
    
jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKeyfuncToCallmillisrecurring);
  },

  
useMock: function() {
    if (!
jasmine.Clock.isInstalled()) {
      var 
spec jasmine.getEnv().currentSpec;
      
spec.after(jasmine.Clock.uninstallMock);

      
jasmine.Clock.installMock();
    }
  },

  
installMock: function() {
    
jasmine.Clock.installed jasmine.Clock.defaultFakeTimer;
  },

  
uninstallMock: function() {
    
jasmine.Clock.assertInstalled();
    
jasmine.Clock.installed jasmine.Clock.real;
  },

  
real: {
    
setTimeoutjasmine.getGlobal().setTimeout,
    
clearTimeoutjasmine.getGlobal().clearTimeout,
    
setIntervaljasmine.getGlobal().setInterval,
    
clearIntervaljasmine.getGlobal().clearInterval
  
},

  
assertInstalled: function() {
    if (!
jasmine.Clock.isInstalled()) {
      throw new 
Error("Mock clock is not installed, use jasmine.Clock.useMock()");
    }
  },

  
isInstalled: function() {
    return 
jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer;
  },

  
installednull
};
jasmine.Clock.installed jasmine.Clock.real;

//else for IE support
jasmine.getGlobal().setTimeout = function(funcToCallmillis) {
  if (
jasmine.Clock.installed.setTimeout.apply) {
    return 
jasmine.Clock.installed.setTimeout.apply(thisarguments);
  } else {
    return 
jasmine.Clock.installed.setTimeout(funcToCallmillis);
  }
};

jasmine.getGlobal().setInterval = function(funcToCallmillis) {
  if (
jasmine.Clock.installed.setInterval.apply) {
    return 
jasmine.Clock.installed.setInterval.apply(thisarguments);
  } else {
    return 
jasmine.Clock.installed.setInterval(funcToCallmillis);
  }
};

jasmine.getGlobal().clearTimeout = function(timeoutKey) {
  if (
jasmine.Clock.installed.clearTimeout.apply) {
    return 
jasmine.Clock.installed.clearTimeout.apply(thisarguments);
  } else {
    return 
jasmine.Clock.installed.clearTimeout(timeoutKey);
  }
};

jasmine.getGlobal().clearInterval = function(timeoutKey) {
  if (
jasmine.Clock.installed.clearTimeout.apply) {
    return 
jasmine.Clock.installed.clearInterval.apply(thisarguments);
  } else {
    return 
jasmine.Clock.installed.clearInterval(timeoutKey);
  }
};
?>
Онлайн: 0
Реклама