tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

15.2.3.6-miscellaneous.js (2157B)


      1 // Any copyright is dedicated to the Public Domain.
      2 // http://creativecommons.org/licenses/publicdomain/
      3 
      4 //-----------------------------------------------------------------------------
      5 var BUGNUMBER = 430133;
      6 var summary = 'ES5 Object.defineProperty(O, P, Attributes)';
      7 
      8 print(BUGNUMBER + ": " + summary);
      9 
     10 /**************
     11 * BEGIN TEST *
     12 **************/
     13 
     14 var o = [];
     15 Object.defineProperty(o, 0, { value: 17 });
     16 var desc = Object.getOwnPropertyDescriptor(o, 0);
     17 assertEq(desc !== undefined, true);
     18 assertEq(desc.value, 17);
     19 assertEq(desc.enumerable, false);
     20 assertEq(desc.configurable, false);
     21 assertEq(desc.writable, false);
     22 
     23 desc = Object.getOwnPropertyDescriptor(o, "length");
     24 assertEq(desc !== undefined, true);
     25 assertEq(desc.enumerable, false);
     26 assertEq(desc.configurable, false);
     27 assertEq(desc.writable, true);
     28 assertEq(desc.value, 1);
     29 assertEq(o.length, 1);
     30 
     31 Object.defineProperty(o, "foobar",
     32                      { value: 42, enumerable: false, configurable: true });
     33 assertEq(o.foobar, 42);
     34 desc = Object.getOwnPropertyDescriptor(o, "foobar");
     35 assertEq(desc !== undefined, true);
     36 assertEq(desc.value, 42);
     37 assertEq(desc.configurable, true);
     38 assertEq(desc.enumerable, false);
     39 assertEq(desc.writable, false);
     40 
     41 var called = false;
     42 o = { set x(a) { called = true; } };
     43 Object.defineProperty(o, "x", { get: function() { return "get"; } });
     44 desc = Object.getOwnPropertyDescriptor(o, "x");
     45 assertEq("set" in desc, true);
     46 assertEq("get" in desc, true);
     47 assertEq(called, false);
     48 o.x = 13;
     49 assertEq(called, true);
     50 
     51 var toSource = Object.prototype.toSource || function() { };
     52 toSource.call(o); // a test for this not crashing
     53 
     54 var called = false;
     55 var o =
     56  Object.defineProperty({}, "foo",
     57                        { get: function() { return 17; },
     58                          set: function(v) { called = true; } });
     59 
     60 assertEq(o.foo, 17);
     61 o.foo = 42;
     62 assertEq(called, true);
     63 
     64 /*
     65 * XXX need tests for Object.defineProperty(array, "length", { ... }) when we
     66 * support it!
     67 */
     68 
     69 /******************************************************************************/
     70 
     71 if (typeof reportCompare === "function")
     72  reportCompare(true, true);
     73 
     74 print("All tests passed!");