Files
jasmine/src/core/Timer.js
Steve Gravrock 63ac7da082 Prevent monkey patching
This doesn't affect globals (describe, it, expect, etc). Those belong to
the user and Jasmine doesn't depend on them.
2026-02-16 20:30:29 -08:00

50 lines
1014 B
JavaScript

getJasmineRequireObj().Timer = function() {
'use strict';
const defaultNow = (function(Date) {
return function() {
return new Date().getTime();
};
})(Date);
/**
* @class Timer
* @classdesc Tracks elapsed time
* @example
* const timer = new jasmine.Timer();
* timer.start();
* const elapsed = timer.elapsed()
*/
function Timer(options) {
options = options || {};
const now = options.now || defaultNow;
let startTime;
/**
* Starts the timer.
* @function
* @name Timer#start
*/
this.start = function() {
startTime = now();
};
/**
* Determines the time since the timer was started.
* @function
* @name Timer#elapsed
* @returns {number} Elapsed time in milliseconds, or NaN if the timer has not been started
*/
this.elapsed = function() {
return now() - startTime;
};
Object.freeze(this);
}
Object.freeze(Timer);
Object.freeze(Timer.prototype);
return Timer;
};