<!DOCTYPE html>
<script src="../../resources/js-test.js"></script>
<script>
description('Test shouldBeNow() in js-test.js');
shouldBeNow("Date.now()");
shouldBeNow("new Date()");
debug("Testing type checking with a string. This should fail.");
shouldBeNow("'Hello world!'");
function stubDateNow(stubValue, callback)
{
var realDateNow = Date.now;
Date.now = function() { return stubValue; }
try {
callback();
} finally {
Date.now = realDateNow;
}
}
debug("Testing past dates. This should fail.");
stubDateNow(60000, function() {
shouldBeNow("50000");
});
debug("Testing future dates. This should fail.");
stubDateNow(60000, function() {
shouldBeNow("70000");
});
debug("Testing a slightly past date with the implicit delta. This should pass.");
stubDateNow(60000, function() {
shouldBeNow("59990");
});
debug("Testing a slightly future date with the implicit delta. This should pass.");
stubDateNow(60000, function() {
shouldBeNow("60010");
});
debug("Testing a past date with a large delta. This should pass.");
stubDateNow(60000, function() {
shouldBeNow("50000", 10000);
});
debug("Testing a future date with a large delta. This should pass.");
stubDateNow(60000, function() {
shouldBeNow("70000", 10000);
});
debug("Simulating a defective clock that always goes backwards. The test below should fail.");
var badClock = Date.now();
var realDateNow = Date.now;
Date.now = function() { return --badClock; }
shouldBeNow("new Date()");
Date.now = realDateNow;
</script>