// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

js> load('testsrc/doctests/util.js');

js> Object.isFrozen
function isFrozen() { [native code for Object.isFrozen, arity=1] }

js> expectTypeError(function() { Object.isFrozen() });
js> [undefined, null, true, 1, 'hello'].forEach(function(value) { 
  >   expectTypeError(function() { Object.isFrozen(value) }) 
  > })

js> Object.isFrozen({})
false

js> var obj = Object.preventExtensions({});
js> Object.isFrozen(obj);
true

js> var obj = Object.defineProperty({}, 'a', {configurable:true, writable:false})
js> var _ = Object.preventExtensions(obj);
js> Object.isFrozen(obj);
false

js> var obj = Object.defineProperty({}, 'a', {configurable:false, writable:true})
js> var _ = Object.preventExtensions(obj);
js> Object.isFrozen(obj);
false

js> var obj = Object.defineProperty({}, 'a', {configurable:false, writable:false})
js> var _ = Object.preventExtensions(obj);
js> Object.isFrozen(obj);
true

js> var obj = Object.defineProperty({}, 'a', {configurable:false, set: function(){} })
js> var _ = Object.preventExtensions(obj);
js> Object.isFrozen(obj);
true

