Test to ensure correct behaviour of Object.getOwnPropertyDescriptor On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS Object.getOwnPropertyDescriptor({}, 'undefinedProperty') is undefined. PASS Object.getOwnPropertyDescriptor({definedProperty:'defined'}, 'definedProperty').value is "defined" PASS Object.getOwnPropertyDescriptor({definedProperty:'defined'}, 'definedProperty').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor({definedProperty:'defined'}, 'definedProperty').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor({definedProperty:'defined'}, 'definedProperty').enumerable is true PASS Object.getOwnPropertyDescriptor({definedProperty:'defined'}, 'definedProperty').configurable is true PASS Object.getOwnPropertyDescriptor(Array.prototype, 'concat').value is Array.prototype.concat PASS Object.getOwnPropertyDescriptor(Array.prototype, 'concat').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(Array.prototype, 'concat').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(Array.prototype, 'concat').enumerable is false PASS Object.getOwnPropertyDescriptor(Array.prototype, 'concat').configurable is true PASS Object.getOwnPropertyDescriptor(Date.prototype, 'toISOString').value is Date.prototype.toISOString PASS Object.getOwnPropertyDescriptor(Date.prototype, 'toISOString').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(Date.prototype, 'toISOString').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(Date.prototype, 'toISOString').enumerable is false PASS Object.getOwnPropertyDescriptor(Date.prototype, 'toISOString').configurable is true PASS Object.getOwnPropertyDescriptor(String.prototype, 'concat').value is String.prototype.concat PASS Object.getOwnPropertyDescriptor(String.prototype, 'concat').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(String.prototype, 'concat').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(String.prototype, 'concat').enumerable is false PASS Object.getOwnPropertyDescriptor(String.prototype, 'concat').configurable is true PASS Object.getOwnPropertyDescriptor(RegExp.prototype, 'exec').value is RegExp.prototype.exec PASS Object.getOwnPropertyDescriptor(RegExp.prototype, 'exec').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(RegExp.prototype, 'exec').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(RegExp.prototype, 'exec').enumerable is false PASS Object.getOwnPropertyDescriptor(RegExp.prototype, 'exec').configurable is true PASS Object.getOwnPropertyDescriptor(document.__proto__.__proto__, 'createElement').value is document.createElement PASS Object.getOwnPropertyDescriptor(document.__proto__.__proto__, 'createElement').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(document.__proto__.__proto__, 'createElement').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(document.__proto__.__proto__, 'createElement').enumerable is true PASS Object.getOwnPropertyDescriptor(document.__proto__.__proto__, 'createElement').configurable is true PASS Object.getOwnPropertyDescriptor(window, 'location').value is window.location PASS Object.getOwnPropertyDescriptor(window, 'location').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(window, 'location').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(window, 'location').enumerable is true PASS Object.getOwnPropertyDescriptor(window, 'location').configurable is false PASS Object.getOwnPropertyDescriptor(Number, 'NEGATIVE_INFINITY').value is Number.NEGATIVE_INFINITY PASS Object.getOwnPropertyDescriptor(Number, 'NEGATIVE_INFINITY').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(Number, 'NEGATIVE_INFINITY').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(Number, 'NEGATIVE_INFINITY').enumerable is false PASS Object.getOwnPropertyDescriptor(Number, 'NEGATIVE_INFINITY').configurable is false FAIL Object.getOwnPropertyDescriptor(RegExp, '$_').value should be (of type string). Was undefined (of type undefined). FAIL Object.getOwnPropertyDescriptor(RegExp, '$_').hasOwnProperty('get') should be false. Was true. FAIL Object.getOwnPropertyDescriptor(RegExp, '$_').hasOwnProperty('set') should be false. Was true. PASS Object.getOwnPropertyDescriptor(RegExp, '$_').enumerable is false PASS Object.getOwnPropertyDescriptor(RegExp, '$_').configurable is true FAIL Object.getOwnPropertyDescriptor(/a/g, 'global').value should be true. Threw exception TypeError: Cannot read property 'value' of undefined FAIL Object.getOwnPropertyDescriptor(/a/g, 'global').hasOwnProperty('get') should be false. Threw exception TypeError: Cannot read property 'hasOwnProperty' of undefined FAIL Object.getOwnPropertyDescriptor(/a/g, 'global').hasOwnProperty('set') should be false. Threw exception TypeError: Cannot read property 'hasOwnProperty' of undefined FAIL Object.getOwnPropertyDescriptor(/a/g, 'global').enumerable should be false. Threw exception TypeError: Cannot read property 'enumerable' of undefined FAIL Object.getOwnPropertyDescriptor(/a/g, 'global').configurable should be false. Threw exception TypeError: Cannot read property 'configurable' of undefined PASS Object.getOwnPropertyDescriptor(Node, 'DOCUMENT_POSITION_DISCONNECTED').value is Node.DOCUMENT_POSITION_DISCONNECTED PASS Object.getOwnPropertyDescriptor(Node, 'DOCUMENT_POSITION_DISCONNECTED').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(Node, 'DOCUMENT_POSITION_DISCONNECTED').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(Node, 'DOCUMENT_POSITION_DISCONNECTED').enumerable is true PASS Object.getOwnPropertyDescriptor(Node, 'DOCUMENT_POSITION_DISCONNECTED').configurable is false PASS Object.getOwnPropertyDescriptor(Math, 'sin').value is Math.sin PASS Object.getOwnPropertyDescriptor(Math, 'sin').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(Math, 'sin').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(Math, 'sin').enumerable is false PASS Object.getOwnPropertyDescriptor(Math, 'sin').configurable is true PASS Object.getOwnPropertyDescriptor([1,2,3], 0).value is 1 PASS Object.getOwnPropertyDescriptor([1,2,3], 0).hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor([1,2,3], 0).hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor([1,2,3], 0).enumerable is true PASS Object.getOwnPropertyDescriptor([1,2,3], 0).configurable is true PASS Object.getOwnPropertyDescriptor([1,2,3], 'length').value is 3 PASS Object.getOwnPropertyDescriptor([1,2,3], 'length').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor([1,2,3], 'length').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor([1,2,3], 'length').enumerable is false PASS Object.getOwnPropertyDescriptor([1,2,3], 'length').configurable is false PASS Object.getOwnPropertyDescriptor([1,2,3], 'length').value is 3 PASS Object.getOwnPropertyDescriptor([1,2,3], 'length').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor([1,2,3], 'length').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor([1,2,3], 'length').enumerable is false PASS Object.getOwnPropertyDescriptor([1,2,3], 'length').configurable is false PASS Object.getOwnPropertyDescriptor(/(a)*/g.exec('a'), 0).value is 'a' PASS Object.getOwnPropertyDescriptor(/(a)*/g.exec('a'), 0).hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(/(a)*/g.exec('a'), 0).hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(/(a)*/g.exec('a'), 0).enumerable is true PASS Object.getOwnPropertyDescriptor(/(a)*/g.exec('a'), 0).configurable is true PASS Object.getOwnPropertyDescriptor(/(a)*/g.exec('a'), 'length').value is 2 PASS Object.getOwnPropertyDescriptor(/(a)*/g.exec('a'), 'length').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(/(a)*/g.exec('a'), 'length').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(/(a)*/g.exec('a'), 'length').enumerable is false PASS Object.getOwnPropertyDescriptor(/(a)*/g.exec('a'), 'length').configurable is false PASS Object.getOwnPropertyDescriptor(function(){}, 'length').value is 0 PASS Object.getOwnPropertyDescriptor(function(){}, 'length').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(function(){}, 'length').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(function(){}, 'length').enumerable is false PASS Object.getOwnPropertyDescriptor(function(){}, 'length').configurable is true PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').value is 1 PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').enumerable is false PASS Object.getOwnPropertyDescriptor(Math.sin, 'length').configurable is true PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').value is 'sin' PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').enumerable is false PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').configurable is true PASS Object.getOwnPropertyDescriptor(global, 'global').value is global PASS Object.getOwnPropertyDescriptor(global, 'global').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(global, 'global').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(global, 'global').enumerable is true PASS Object.getOwnPropertyDescriptor(global, 'global').configurable is false PASS Object.getOwnPropertyDescriptor(global, 'undefined').value is undefined PASS Object.getOwnPropertyDescriptor(global, 'undefined').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(global, 'undefined').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(global, 'undefined').enumerable is false PASS Object.getOwnPropertyDescriptor(global, 'undefined').configurable is false PASS Object.getOwnPropertyDescriptor(global, 'NaN').value is NaN PASS Object.getOwnPropertyDescriptor(global, 'NaN').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(global, 'NaN').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(global, 'NaN').enumerable is false PASS Object.getOwnPropertyDescriptor(global, 'NaN').configurable is false PASS Object.getOwnPropertyDescriptor(global, 'Infinity').value is Infinity PASS Object.getOwnPropertyDescriptor(global, 'Infinity').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(global, 'Infinity').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(global, 'Infinity').enumerable is false PASS Object.getOwnPropertyDescriptor(global, 'Infinity').configurable is false PASS Object.getOwnPropertyDescriptor(global, 'window').value is global PASS Object.getOwnPropertyDescriptor(global, 'window').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(global, 'window').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(global, 'window').enumerable is true PASS Object.getOwnPropertyDescriptor(global, 'window').configurable is false PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').value is XMLHttpRequest PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').enumerable is false PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').configurable is true PASS Object.getOwnPropertyDescriptor(global, 'length').value is global.length PASS Object.getOwnPropertyDescriptor(global, 'length').hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(global, 'length').hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(global, 'length').enumerable is true FAIL Object.getOwnPropertyDescriptor(global, 'length').configurable should be false. Was true. PASS Object.getOwnPropertyDescriptor(global, 0).value is global[0] PASS Object.getOwnPropertyDescriptor(global, 0).hasOwnProperty('get') is false PASS Object.getOwnPropertyDescriptor(global, 0).hasOwnProperty('set') is false PASS Object.getOwnPropertyDescriptor(global, 0).enumerable is false FAIL Object.getOwnPropertyDescriptor(global, 0).configurable should be false. Was true. PASS Object.getOwnPropertyDescriptor(objectWithGetter, 'getter').get is getterFunc PASS Object.getOwnPropertyDescriptor(objectWithGetter, 'getter').set is undefined PASS Object.getOwnPropertyDescriptor(objectWithGetter, 'getter').hasOwnProperty('value') is false PASS Object.getOwnPropertyDescriptor(objectWithGetter, 'getter').hasOwnProperty('writable') is false PASS Object.getOwnPropertyDescriptor(objectWithGetter, 'getter').enumerable is true PASS Object.getOwnPropertyDescriptor(objectWithGetter, 'getter').configurable is true PASS Object.getOwnPropertyDescriptor(objectWithSetter, 'setter').get is undefined PASS Object.getOwnPropertyDescriptor(objectWithSetter, 'setter').set is setterFunc PASS Object.getOwnPropertyDescriptor(objectWithSetter, 'setter').hasOwnProperty('value') is false PASS Object.getOwnPropertyDescriptor(objectWithSetter, 'setter').hasOwnProperty('writable') is false PASS Object.getOwnPropertyDescriptor(objectWithSetter, 'setter').enumerable is true PASS Object.getOwnPropertyDescriptor(objectWithSetter, 'setter').configurable is true PASS Object.getOwnPropertyDescriptor(objectWithAccessor, 'accessor').get is getterFunc PASS Object.getOwnPropertyDescriptor(objectWithAccessor, 'accessor').set is setterFunc PASS Object.getOwnPropertyDescriptor(objectWithAccessor, 'accessor').hasOwnProperty('value') is false PASS Object.getOwnPropertyDescriptor(objectWithAccessor, 'accessor').hasOwnProperty('writable') is false PASS Object.getOwnPropertyDescriptor(objectWithAccessor, 'accessor').enumerable is true PASS Object.getOwnPropertyDescriptor(objectWithAccessor, 'accessor').configurable is true PASS Object.getOwnPropertyDescriptor(null) threw exception TypeError: Cannot convert undefined or null to object. PASS Object.getOwnPropertyDescriptor(undefined) threw exception TypeError: Cannot convert undefined or null to object. PASS Object.getOwnPropertyDescriptor(1) is undefined. PASS Object.getOwnPropertyDescriptor('') is undefined. PASS Object.getOwnPropertyDescriptor(true) is undefined. PASS Object.getOwnPropertyDescriptor(false) is undefined. Checking property ordering PASS property is 'value' PASS property is 'writable' PASS property is 'enumerable' PASS property is 'configurable' PASS property is 'get' PASS property is 'set' PASS property is 'enumerable' PASS property is 'configurable' PASS property is 'get' PASS property is 'set' PASS property is 'enumerable' PASS property is 'configurable' PASS property is 'get' PASS property is 'set' PASS property is 'enumerable' PASS property is 'configurable' PASS successfullyParsed is true TEST COMPLETE