61c6ab3fb0
functional tests, unless a whole lot of mock objects are introduced, which isn't entirely out of the question). Uses JsUnit, which is included in this commit.
180 lines
4.3 KiB
HTML
180 lines
4.3 KiB
HTML
<html>
|
|
<head>
|
|
<title>Tests for jsUnitMockTimeout.js</title>
|
|
<script language="javascript" src="../app/jsUnitCore.js"></script>
|
|
<script src="../app/jsUnitMockTimeout.js" type="text/javascript"></script>
|
|
<script language="javascript">
|
|
var clockLand;
|
|
|
|
function setUp() {
|
|
Clock.reset();
|
|
clockLand = "";
|
|
}
|
|
|
|
function testSimpleClock() {
|
|
setTimeout(function() {
|
|
clockLand = 'A';
|
|
}, 1000);
|
|
setTimeout(function() {
|
|
clockLand = 'B';
|
|
}, 2000);
|
|
setTimeout(function() {
|
|
clockLand = 'C';
|
|
}, 3000);
|
|
Clock.tick(1000);
|
|
assertEquals('A', clockLand);
|
|
Clock.tick(1000);
|
|
assertEquals('B', clockLand);
|
|
Clock.tick(1000);
|
|
assertEquals('C', clockLand);
|
|
}
|
|
|
|
function testClockOutOfOrder() {
|
|
setTimeout(function() {
|
|
clockLand = 'A';
|
|
}, 2000);
|
|
setTimeout(function() {
|
|
clockLand = 'B';
|
|
}, 1000);
|
|
setTimeout(function() {
|
|
clockLand = 'C';
|
|
}, 3000);
|
|
Clock.tick(1000);
|
|
assertEquals('B', clockLand);
|
|
Clock.tick(1000);
|
|
assertEquals('A', clockLand);
|
|
Clock.tick(1000);
|
|
assertEquals('C', clockLand);
|
|
}
|
|
|
|
function testTimeoutsCanBeCleared() {
|
|
setTimeout(function() {
|
|
clockLand = 'A';
|
|
}, 1000);
|
|
var timeoutToClear = setTimeout(function() {
|
|
clockLand = 'B';
|
|
}, 2000);
|
|
setTimeout(function() {
|
|
clockLand = 'C';
|
|
}, 3000);
|
|
clearTimeout(timeoutToClear);
|
|
Clock.tick(1000);
|
|
assertEquals('A', clockLand);
|
|
Clock.tick(1000);
|
|
assertEquals('A', clockLand);
|
|
Clock.tick(1000);
|
|
assertEquals('C', clockLand);
|
|
}
|
|
|
|
function testTimeoutWithinTimeout() {
|
|
var timeoutFunction = function() {
|
|
clockLand = "A";
|
|
setTimeout(function() {
|
|
clockLand = "B";
|
|
}, 10)
|
|
};
|
|
|
|
setTimeout(timeoutFunction, 100);
|
|
Clock.tick(100);
|
|
assertEquals('A', clockLand);
|
|
Clock.tick(10);
|
|
assertEquals('B', clockLand);
|
|
}
|
|
|
|
function testTimeoutWithRecursion() {
|
|
var recursiveFunction = function() {
|
|
clockLand = "A";
|
|
setTimeout(
|
|
function() {
|
|
recursiveFunction();
|
|
clockLand = "B";
|
|
}, 10);
|
|
}
|
|
setTimeout(recursiveFunction, 100);
|
|
Clock.tick(100);
|
|
assertEquals("A", clockLand);
|
|
Clock.tick(10);
|
|
assertEquals("B", clockLand);
|
|
}
|
|
|
|
function testTimeoutWithRecursionWithinTick() {
|
|
var recursiveFunction = function() {
|
|
clockLand = "A";
|
|
setTimeout(
|
|
function() {
|
|
recursiveFunction();
|
|
clockLand = "B";
|
|
}, 10);
|
|
}
|
|
setTimeout(recursiveFunction, 100);
|
|
Clock.tick(110);
|
|
assertEquals("B", clockLand);
|
|
}
|
|
|
|
function testTimeoutWithDelayedRecursion() {
|
|
var recursiveFunction = function() {
|
|
clockLand = "A";
|
|
setTimeout(
|
|
function() {
|
|
recursiveFunction();
|
|
clockLand = "B";
|
|
}, 100);
|
|
}
|
|
setTimeout(recursiveFunction, 10);
|
|
Clock.tick(10);
|
|
assertEquals("A", clockLand);
|
|
Clock.tick(100);
|
|
assertEquals("B", clockLand);
|
|
}
|
|
|
|
function testComplicatedBigTickWithOutOfOrderTimeouts() {
|
|
setTimeout(function() {
|
|
clockLand = 'A';
|
|
}, 4000);
|
|
setTimeout(function() {
|
|
clockLand = 'B';
|
|
}, 1000);
|
|
setTimeout(function() {
|
|
setTimeout(function() {
|
|
clockLand = 'D';
|
|
}, 1000);
|
|
clockLand = 'C';
|
|
}, 2000);
|
|
Clock.tick(4000);
|
|
assertEquals('D', clockLand);
|
|
}
|
|
|
|
function testBigTickWithOutOfOrderTimeouts() {
|
|
setTimeout(function() {
|
|
clockLand = 'A';
|
|
}, 3000);
|
|
setTimeout(function() {
|
|
clockLand = 'B';
|
|
}, 1000);
|
|
setTimeout(function() {
|
|
clockLand = 'C';
|
|
}, 2000);
|
|
Clock.tick(3000);
|
|
assertEquals('A', clockLand);
|
|
}
|
|
|
|
function testInterval() {
|
|
var currentInterval = 0;
|
|
var intervalKey = setInterval(function () {
|
|
++currentInterval;
|
|
}, 200);
|
|
Clock.tick(200);
|
|
assertEquals(1, currentInterval);
|
|
Clock.tick(400);
|
|
assertEquals(3, currentInterval);
|
|
clearInterval(intervalKey);
|
|
Clock.tick(400);
|
|
assertEquals(3, currentInterval);
|
|
}
|
|
</script>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
</body>
|
|
</html> |