xpcom/tests/unit/test_nsIMutableArray.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 const Ci = Components.interfaces;
     6 const Cr = Components.results;
     7 const Cc = Components.classes;
     8 const CC = Components.Constructor;
    10 var MutableArray = CC("@mozilla.org/array;1", "nsIMutableArray");
    11 var SupportsString = CC("@mozilla.org/supports-string;1", "nsISupportsString");
    13 function create_n_element_array(n)
    14 {
    15   var arr = new MutableArray();
    16   for (let i=0; i<n; i++) {
    17     let str = new SupportsString();
    18     str.data = "element " + i;
    19     arr.appendElement(str, false);
    20   }
    21   return arr;
    22 }
    24 function test_appending_null_actually_inserts()
    25 {
    26   var arr = new MutableArray();
    27   do_check_eq(0, arr.length);
    28   arr.appendElement(null, false);
    29   do_check_eq(1, arr.length);
    30 }
    32 function test_object_gets_appended()
    33 {
    34   var arr = new MutableArray();
    35   var str = new SupportsString();
    36   str.data = "hello";
    37   arr.appendElement(str, false);
    38   do_check_eq(1, arr.length);
    39   var obj = arr.queryElementAt(0, Ci.nsISupportsString);
    40   do_check_eq(str, obj);
    41 }
    43 function test_insert_at_beginning()
    44 {
    45   var arr = create_n_element_array(5);
    46   // just a sanity check
    47   do_check_eq(5, arr.length);
    48   var str = new SupportsString();
    49   str.data = "hello";
    50   arr.insertElementAt(str, 0, false);
    51   do_check_eq(6, arr.length);
    52   var obj = arr.queryElementAt(0, Ci.nsISupportsString);
    53   do_check_eq(str, obj);
    54   // check the data of all the other objects
    55   for (let i=1; i<arr.length; i++) {
    56     let obj = arr.queryElementAt(i, Ci.nsISupportsString);
    57     do_check_eq("element " + (i-1), obj.data);
    58   }
    59 }
    61 function test_replace_element()
    62 {
    63   var arr = create_n_element_array(5);
    64   // just a sanity check
    65   do_check_eq(5, arr.length);
    66   var str = new SupportsString();
    67   str.data = "hello";
    68   // replace first element
    69   arr.replaceElementAt(str, 0, false);
    70   do_check_eq(5, arr.length);
    71   var obj = arr.queryElementAt(0, Ci.nsISupportsString);
    72   do_check_eq(str, obj);
    73   // replace last element
    74   arr.replaceElementAt(str, arr.length - 1, false);
    75   do_check_eq(5, arr.length);
    76   obj = arr.queryElementAt(arr.length - 1, Ci.nsISupportsString);
    77   do_check_eq(str, obj);
    78   // replace after last element, should insert empty elements
    79   arr.replaceElementAt(str, 9, false);
    80   do_check_eq(10, arr.length);
    81   obj = arr.queryElementAt(9, Ci.nsISupportsString);
    82   do_check_eq(str, obj);
    83   // AFAIK there's no way to check the empty elements, since you can't QI them.
    84 }
    86 function test_clear()
    87 {
    88   var arr = create_n_element_array(5);
    89   // just a sanity check
    90   do_check_eq(5, arr.length);
    91   arr.clear();
    92   do_check_eq(0, arr.length);
    93 }
    95 function test_enumerate()
    96 {
    97   var arr = create_n_element_array(5);
    98   do_check_eq(5, arr.length);
    99   var en = arr.enumerate();
   100   var i = 0;
   101   while (en.hasMoreElements()) {
   102     let str = en.getNext();
   103     do_check_true(str instanceof Ci.nsISupportsString);
   104     do_check_eq(str.data, "element " + i);
   105     i++;
   106   }
   107   do_check_eq(arr.length, i);
   108 }
   110 var tests = [
   111   test_appending_null_actually_inserts,
   112   test_object_gets_appended,
   113   test_insert_at_beginning,
   114   test_replace_element,
   115   test_clear,
   116   test_enumerate,
   117 ];
   119 function run_test() {
   120   for (var i = 0; i < tests.length; i++)
   121     tests[i]();
   122 }

mercurial