blob: 8b501c6160109d047b583dcfddd8c95a84f7b0d8 [file] [log] [blame]
<html>
<head>
<script>
var throwOnToStringObject = { };
throwOnToStringObject.toString = function () { throw "Cannot call toString on this object." };
var throwOnGetLengthObject = { };
throwOnGetLengthObject.__defineGetter__("length", function () { throw "Cannot get length of this object."; });
var throwOnGetZeroObject = { length: 1 };
throwOnGetZeroObject.__defineGetter__("0", function () { throw "Cannot get 0 property of this object."; });
var expectNoException = [
'',
'null',
'undefined',
'0',
'""',
'"", null',
'"", undefined',
'"", []',
'"", [ "arg0" ]',
'"", { }',
'"", { length: 0 }',
'"", { length: 1, 0: "arg0" }',
'"", null, null',
'"", null, undefined',
'"", null, { }',
'"", null, null, null',
'"", null, null, undefined',
'"", null, null, { }',
];
var expectException = [
'throwOnToStringObject',
'"", throwOnGetLengthObject',
'"", throwOnGetZeroObject',
'"", [ throwOnToStringObject ]',
'"", 0',
'"", ""',
'"", null, 0',
'"", null, ""',
'"", null, null, 0',
'"", null, null, ""',
];
function writeMessageToLog(message)
{
document.getElementById("console").innerText += message + "\n";
}
function tryExecuteSql(transaction, parameterList)
{
try {
eval('transaction.executeSql(' + parameterList + ')');
return null;
} catch (exception) {
return exception;
}
}
function runTransactionTest(transaction, parameterList, expectException)
{
var exception = tryExecuteSql(transaction, parameterList);
if (expectException) {
if (exception)
writeMessageToLog("PASS. executeSql(" + parameterList + ") threw an exception as expected: " + exception);
else
writeMessageToLog("*FAIL*. executeSql(" + parameterList + ") did not throw an exception");
} else {
if (exception)
writeMessageToLog("*FAIL*. executeSql(" + parameterList + ") threw an exception: " + exception);
else
writeMessageToLog("PASS. executeSql(" + parameterList + ") did not throw an exception");
}
}
function runTransactionTests(transaction)
{
for (i in expectNoException)
runTransactionTest(transaction, expectNoException[i], false);
for (i in expectException)
runTransactionTest(transaction, expectException[i], true);
if (window.layoutTestController)
layoutTestController.notifyDone();
}
function runTest()
{
if (window.layoutTestController) {
layoutTestController.dumpAsText();
layoutTestController.waitUntilDone();
}
var db = openDatabase("ExecuteSQLArgsTest", "1.0", "Test of handling of the arguments to SQLTransaction.executeSql", 1);
db.transaction(runTransactionTests);
}
</script>
</head>
<body onload="runTest()">
<pre id="console"></pre>
</body>
</html>