| <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> |