blob: 01f7d968d241cc9a49731ce575cfed5d5d9caa5e [file] [log] [blame]
<body>
<p>Test Worker constructor functionality. Should print a series of PASS messages, followed with DONE.</p>
<div id=result></div>
<script>
function log(message)
{
document.getElementById("result").innerHTML += message + "<br>";
}
var testCases = [
"testArgumentException",
"testRecursiveWorkerCreation",
"testNoArgument",
"testEmptyScriptUrl",
"testInvalidScriptUrl",
"testNotExistentScriptUrl",
"testSuccessWorkerCreation",
];
var testIndex = 0;
function runNextTest()
{
if (testIndex < testCases.length) {
testIndex++;
window[testCases[testIndex - 1]]();
} else {
log("DONE");
if (window.testRunner)
testRunner.notifyDone();
}
}
function testArgumentException()
{
try {
new Worker({toString:function(){throw "exception"}})
log("FAIL: toString exception not propagated.");
} catch (ex) {
if (ex == "exception")
log("PASS: toString exception propagated correctly.");
else
log("FAIL: unexpected exception (" + ex + ") received instead of one propagated from toString.");
}
runNextTest();
}
function testRecursiveWorkerCreation()
{
try {
var foo = {toString:function(){new Worker(foo)}}
new Worker(foo);
log("FAIL: no exception when trying to create workers recursively");
} catch (ex) {
log("PASS: trying to create workers recursively resulted in an exception (" + ex + ")");
}
runNextTest();
}
function testNoArgument()
{
try {
new Worker();
log("FAIL: invoking Worker constructor without arguments did not result in an exception");
} catch (ex) {
log("PASS: invoking Worker constructor without arguments resulted in an exception (" + ex + ")");
}
runNextTest();
}
function testEmptyScriptUrl()
{
try {
var worker = new Worker("");
worker.onerror = function() {
log("FAIL: onerror invoked for an empty script URL.");
runNextTest();
}
} catch (ex) {
log("PASS: invoking Worker constructor with empty script URL resulted in an exception (" + ex + ")");
runNextTest();
}
}
function testInvalidScriptUrl()
{
try {
var worker = new Worker("http://invalid:123$");
worker.onerror = function() {
log("FAIL: onerror invoked for an invalid script URL.");
runNextTest();
}
} catch (ex) {
log("PASS: invoking Worker constructor with invalid script URL resulted in an exception (" + ex + ")");
runNextTest();
}
}
function testNotExistentScriptUrl()
{
try {
var worker = new Worker("does-not-exist.js");
worker.onerror = function() {
log("PASS: onerror invoked for a script that could not be loaded.");
runNextTest();
}
} catch (ex) {
log("FAIL: unexpected exception " + ex);
runNextTest();
}
}
function testSuccessWorkerCreation()
{
try {
var worker = new Worker("resources/worker-common.js");
// Make sure attributes from both Worker and AbstractWorker are visible.
if (!worker.postMessage)
log("FAIL: worker.postMessage did not exist.");
else if (!worker.addEventListener)
log("FAIL: worker.addEventListener did not exist.");
else
log("PASS: Successfully created worker.");
} catch (ex) {
log("FAIL: unexpected exception (" + ex + ") thrown when creating worker");
}
runNextTest();
}
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
runNextTest();
</script>
</body>