<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."); 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>