Index: LayoutTests/storage/execute-sql-args.js |
=================================================================== |
--- LayoutTests/storage/execute-sql-args.js (revision 0) |
+++ LayoutTests/storage/execute-sql-args.js (revision 0) |
@@ -0,0 +1,88 @@ |
+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 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) |
+ log("PASS. executeSql(" + parameterList + ") threw an exception as expected."); |
+ else |
+ log("*FAIL*. executeSql(" + parameterList + ") did not throw an exception"); |
+ } else { |
+ if (exception) |
+ log("*FAIL*. executeSql(" + parameterList + ") threw an exception: " + exception); |
+ else |
+ log("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() |
+{ |
+ |
+ var db = openDatabase("ExecuteSQLArgsTest", "1.0", "Test of handling of the arguments to SQLTransaction.executeSql", 1); |
+ db.transaction(runTransactionTests); |
+} |
+ |
+ |