Checks that [Unforgeable] attributes are non-configurable and on the instance rather than the prototype.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Event.isTrusted
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Document.location
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Window.window
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Window.document
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Window.location
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Window.top
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Location.ancestorOrigins
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Location.href
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Location.origin
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Location.protocol
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Location.username
FAIL Unsupported property.

Location.password
FAIL Unsupported property.

Location.host
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Location.hostname
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Location.port
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Location.pathname
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Location.search
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false

Location.hash
PASS testObject.hasOwnProperty(testPropertyName) is true
PASS testObject.__proto__.hasOwnProperty(testPropertyName) is false
PASS Object.defineProperty(testObject, testPropertyName, { value: 'test' }) threw exception TypeError: Attempting to change access mechanism for an unconfigurable property..
PASS Object.getOwnPropertyDescriptor(testObject, testPropertyName).configurable is false
PASS successfullyParsed is true

TEST COMPLETE

