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 = openDatabaseWithSuffix("ExecuteSQLArgsTest", "1.0", "Test of handling of the arguments to SQLTransaction.executeSql", 1);
db.transaction(runTransactionTests);
}