witten
/
luminotes
Archived
1
0
Fork 0
This repository has been archived on 2023-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
luminotes/static/jsunit/tests/jsUnitMockTimeoutTest.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>