blob: 206b1f87db870330af72d519552ee2a1a4886cf0 [file] [log] [blame]
<html>
<body>
<p>Test EventSource states for different status codes. Should print a series of PASS messages followed by DONE.</p>
<div id="result"></div>
<script>
function log(msg) {
document.getElementById("result").innerHTML += msg + "<br>";
}
function arrayCompare(a1, a2) {
if (a1.length != a2.length)
return false;
for (var i = 0; i < a1.length; i++)
if (a1[i] != a2[i])
return false;
return true;
}
var stateNames = ["CONNECTING", "OPEN", "CLOSED"];
for (var i in stateNames)
eval("var " + stateNames[i] + " = " + i);
var tests = [{"code": 200, "expectedStates": [CONNECTING, OPEN, OPEN, CONNECTING, CLOSED]},
{"code": 204, "expectedStates": [CONNECTING,,, CLOSED, CLOSED]},
{"code": 205, "expectedStates": [CONNECTING,,, CLOSED, CLOSED]},
{"code": 202, "expectedStates": [CONNECTING,,, CLOSED, CLOSED]}, // other 2xx
{"code": 301, "expectedStates": [CONNECTING, OPEN, OPEN, CONNECTING, CLOSED]},
{"code": 302, "expectedStates": [CONNECTING, OPEN, OPEN, CONNECTING, CLOSED]},
{"code": 303, "expectedStates": [CONNECTING, OPEN, OPEN, CONNECTING, CLOSED]},
{"code": 307, "expectedStates": [CONNECTING, OPEN, OPEN, CONNECTING, CLOSED]},
{"code": 404, "expectedStates": [CONNECTING,,, CLOSED, CLOSED]}]; // any other
var count = 0;
function runTest() {
if (count >= tests.length) {
log("DONE");
if (window.testRunner)
testRunner.notifyDone();
return;
}
var states = [];
var es = new EventSource("resources/status-codes.php?status-code=" + tests[count].code);
states[0] = es.readyState;
es.onopen = function () {
states[1] = es.readyState;
};
es.onmessage = function (evt) {
states[2] = es.readyState;
};
es.onerror = function () {
states[3] = es.readyState;
es.close();
states[4] = es.readyState;
var result = arrayCompare(states, tests[count].expectedStates) ? "PASS" : "FAIL";
result += ": status code " + tests[count].code + " resulted in states ";
for (var i in states)
result += (i != 0 ? ", " : "") + stateNames[states[i]];
log(result);
setTimeout(runTest, 0);
count++;
};
}
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
runTest();
</script>
</body>
</html>