Home | History | Annotate | Download | only in storage
      1 var throwOnToStringObject = { };
      2 throwOnToStringObject.toString = function () { throw "Cannot call toString on this object." };
      3 
      4 var throwOnGetLengthObject = { };
      5 throwOnGetLengthObject.__defineGetter__("length", function () { throw "Cannot get length of this object."; });
      6 
      7 var throwOnGetZeroObject = { length: 1 };
      8 throwOnGetZeroObject.__defineGetter__("0", function () { throw "Cannot get 0 property of this object."; });
      9 
     10 var expectNoException = [
     11     'null',
     12     'undefined',
     13     '0',
     14     '""',
     15     '"", null',
     16     '"", undefined',
     17     '"", []',
     18     '"", [ "arg0" ]',
     19     '"", { }',
     20     '"", { length: 0 }',
     21     '"", { length: 1, 0: "arg0" }',
     22     '"", null, null',
     23     '"", null, undefined',
     24     '"", null, { }',
     25     '"", null, null, null',
     26     '"", null, null, undefined',
     27     '"", null, null, { }',
     28 ];
     29 
     30 var expectException = [
     31     '',
     32     'throwOnToStringObject',
     33     '"", throwOnGetLengthObject',
     34     '"", throwOnGetZeroObject',
     35     '"", [ throwOnToStringObject ]',
     36     '"", 0',
     37     '"", ""',
     38     '"", null, 0',
     39     '"", null, ""',
     40     '"", null, null, 0',
     41     '"", null, null, ""',
     42 ];
     43 
     44 function tryExecuteSql(transaction, parameterList)
     45 {
     46     try {
     47         eval('transaction.executeSql(' + parameterList + ')');
     48         return null;
     49     } catch (exception) {
     50         return exception;
     51     }
     52 }
     53 
     54 function runTransactionTest(transaction, parameterList, expectException)
     55 {
     56     var exception = tryExecuteSql(transaction, parameterList);
     57     if (expectException) {
     58         if (exception)
     59             log("PASS. executeSql(" + parameterList + ") threw an exception as expected.");
     60         else
     61             log("*FAIL*. executeSql(" + parameterList + ") did not throw an exception");
     62     } else {
     63         if (exception)
     64             log("*FAIL*. executeSql(" + parameterList + ") threw an exception: " + exception);
     65         else
     66             log("PASS. executeSql(" + parameterList + ") did not throw an exception");
     67     }
     68 }
     69 
     70 function runTransactionTests(transaction)
     71 {
     72     for (i in expectNoException)
     73         runTransactionTest(transaction, expectNoException[i], false);
     74     for (i in expectException)
     75         runTransactionTest(transaction, expectException[i], true);
     76 
     77     if (window.layoutTestController)
     78         layoutTestController.notifyDone();
     79 }
     80 
     81 function runTest()
     82 {
     83 
     84     var db = openDatabaseWithSuffix("ExecuteSQLArgsTest", "1.0", "Test of handling of the arguments to SQLTransaction.executeSql", 1);
     85     db.transaction(runTransactionTests);
     86 }
     87