js/src/tests/ecma_5/Object/add-property-non-extensible.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2  * Any copyright is dedicated to the Public Domain.
     3  * http://creativecommons.org/licenses/publicdomain/
     4  * Contributor:
     5  *   Jeff Walden <jwalden+code@mit.edu>
     6  */
     8 var gTestfile = 'add-property-non-extensible.js';
     9 //-----------------------------------------------------------------------------
    10 var BUGNUMBER = 602144;
    11 var summary =
    12   'Properly method-compile attempted addition of properties to ' +
    13   'non-extensible objects';
    15 print(BUGNUMBER + ": " + summary);
    17 /**************
    18  * BEGIN TEST *
    19  **************/
    21 // No property
    23 var o1 = {};
    24 for (var i = 0; i < 5; i++)
    25   o1.a = 3;
    26 assertEq(o1.a, 3);
    28 var o2 = Object.preventExtensions({});
    29 for (var i = 0; i < 5; i++)
    30   o2.a = 3;
    31 assertEq(Object.getOwnPropertyDescriptor(o2, "a"), undefined);
    33 var o3 = Object.seal({});
    34 for (var i = 0; i < 5; i++)
    35   o3.a = 3;
    36 assertEq(Object.getOwnPropertyDescriptor(o3, "a"), undefined);
    38 var o4 = Object.freeze({});
    39 for (var i = 0; i < 5; i++)
    40   o4.a = 3;
    41 assertEq(Object.getOwnPropertyDescriptor(o4, "a"), undefined);
    44 // Has property
    46 var o5 = { a: 2 };
    47 for (var i = 0; i < 5; i++)
    48   o5.a = 3;
    49 assertEq(o5.a, 3);
    51 var o6 = Object.preventExtensions({ a: 2 });
    52 for (var i = 0; i < 5; i++)
    53   o6.a = 3;
    54 assertEq(o6.a, 3);
    56 var o7 = Object.seal({ a: 2 });
    57 for (var i = 0; i < 5; i++)
    58   o7.a = 3;
    59 assertEq(o7.a, 3);
    61 var o8 = Object.freeze({ a: 2 });
    62 for (var i = 0; i < 5; i++)
    63   o8.a = 3;
    64 assertEq(o8.a, 2);
    67 // Extensible, hit up the prototype chain
    69 var o9 = Object.create({ a: 2 });
    70 for (var i = 0; i < 5; i++)
    71   o9.a = 3;
    72 assertEq(o9.a, 3);
    74 var o10 = Object.create(Object.preventExtensions({ a: 2 }));
    75 for (var i = 0; i < 5; i++)
    76   o10.a = 3;
    77 assertEq(o10.a, 3);
    79 var o11 = Object.create(Object.seal({ a: 2 }));
    80 for (var i = 0; i < 5; i++)
    81   o11.a = 3;
    82 assertEq(o11.a, 3);
    84 var o12 = Object.create(Object.freeze({ a: 2 }));
    85 for (var i = 0; i < 5; i++)
    86   o12.a = 3;
    87 assertEq(Object.getOwnPropertyDescriptor(o12, "a"), undefined);
    90 // Not extensible, hit up the prototype chain
    92 var o13 = Object.preventExtensions(Object.create({ a: 2 }));
    93 for (var i = 0; i < 5; i++)
    94   o13.a = 3;
    95 assertEq(Object.getOwnPropertyDescriptor(o13, "a"), undefined);
    97 var o14 =
    98   Object.preventExtensions(Object.create(Object.preventExtensions({ a: 2 })));
    99 for (var i = 0; i < 5; i++)
   100   o14.a = 3;
   101 assertEq(Object.getOwnPropertyDescriptor(o14, "a"), undefined);
   103 var o15 = Object.preventExtensions(Object.create(Object.seal({ a: 2 })));
   104 for (var i = 0; i < 5; i++)
   105   o15.a = 3;
   106 assertEq(Object.getOwnPropertyDescriptor(o15, "a"), undefined);
   108 var o16 = Object.preventExtensions(Object.create(Object.freeze({ a: 2 })));
   109 for (var i = 0; i < 5; i++)
   110   o16.a = 3;
   111 assertEq(Object.getOwnPropertyDescriptor(o16, "a"), undefined);
   114 /******************************************************************************/
   116 reportCompare(true, true);
   118 print("All tests passed!");

mercurial