diff options
Diffstat (limited to 'LayoutTests/storage/execute-sql-args.html')
-rw-r--r-- | LayoutTests/storage/execute-sql-args.html | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/LayoutTests/storage/execute-sql-args.html b/LayoutTests/storage/execute-sql-args.html new file mode 100644 index 0000000..43814c6 --- /dev/null +++ b/LayoutTests/storage/execute-sql-args.html @@ -0,0 +1,109 @@ +<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> |