Test ensures Reflect.set functionality with DOM objects.

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


CustomAccessor setters for DOM objects. These setters are treated as setters in ECMA262. Reflect.set returns true because a setter is found.
PASS Reflect.set(document.body, "scrollTop", "#Hello") is true
PASS Reflect.get(document.body, "scrollTop") is not "#Hello"
PASS Reflect.set(document.body, "scrollTop", 0) is true
PASS Reflect.get(document.body, "scrollTop") is 0
PASS Reflect.set(document.body, "scrollTop", "Cocoa", receiver) threw exception TypeError: The Element.scrollTop setter can only be used on instances of Element.
PASS Reflect.get(document.body, "scrollTop") is 0
PASS Reflect.get(receiver, "scrollTop") is undefined
CustomAccessor with ReadOnly
PASS Reflect.set(document, "compatMode", false) is false
PASS Reflect.get(document, "compatMode") is "BackCompat"
PASS Reflect.set(document, "compatMode", false, receiver) is false
PASS Reflect.get(document, "compatMode") is "BackCompat"
PASS Reflect.get(receiver, "compatMode") is undefined
CustomAccessor without setter for DOM objects
PASS Reflect.set(window.history, "length", "http://www.example.com") is false
PASS Reflect.get(window.history, "length") is not "http://www.example.com"
PASS Reflect.set(window.history, "length", "http://www.example.com", receiver) is false
PASS Reflect.get(window.history, "length") is not "http://www.example.com"
PASS Reflect.get(receiver, "length") is undefined
CustomValue setters.
PASS Reflect.set(window, "Event", "http://www.example.com") is true
PASS Reflect.get(window, "Event") is "http://www.example.com"
PASS Reflect.set(window, "MessageEvent", "http://www.example.com", receiver) is true
PASS Reflect.get(window, "MessageEvent") is not "http://www.example.com"
PASS Reflect.get(receiver, "MessageEvent") is "http://www.example.com"
CustomValue setters with writable=false.
PASS Reflect.defineProperty(window, "MouseEvent", {
    writable: false
}) is true
PASS Reflect.set(window, "MouseEvent", "http://www.example.com") is false
PASS Reflect.get(window, "MouseEvent") is originalMouseEvent
PASS Reflect.set(window, "MouseEvent", "http://www.example.com", receiver) is false
PASS Reflect.get(window, "MouseEvent") is originalMouseEvent
PASS Reflect.get(receiver, "MouseEvent") is undefined
putDelegate CustomAccessor setters for DOM objects.
PASS Reflect.set(document.location, "hash", "#Hello") is true
PASS Reflect.get(document.location, "hash") is "#Hello"
PASS Reflect.set(document.location, "hash", "#OUT") is true
PASS Reflect.get(document.location, "hash") is "#OUT"
PASS Reflect.set(document.location, 0, "#Hello") is true
PASS Reflect.get(document.location, 0) is "#Hello"
PASS Reflect.set(document.location, 0, "#OUT") is true
PASS Reflect.get(document.location, 0) is "#OUT"
PASS Reflect.set(document.location, "hash", "#Hello", receiver) threw exception TypeError: The Location.hash setter can only be used on instances of Location.
PASS Reflect.get(document.location, "hash") is "#OUT"
PASS Reflect.get(receiver, "hash") is undefined
PASS Reflect.set(document.location, 0, "#Hello", receiver) is true
PASS Reflect.get(document.location, 0) is "#OUT"
PASS Reflect.get(receiver, 0) is "#Hello"
putDelegate CustomAccessor without setter for DOM objects
PASS Reflect.set(document.location, "origin", "http://www.example.com") is false
PASS Reflect.get(document.location, "origin") is not "http://www.example.com"
PASS Reflect.set(document.location, "origin", "http://www.example.com", receiver) is false
PASS Reflect.get(document.location, "origin") is not "http://www.example.com"
PASS Reflect.get(receiver, "origin") is undefined
NPAPI object with Reflect.set
PASS Reflect.set(npobject, "Cocoa", "Sweet") is true
PASS Reflect.get(npobject, "Cocoa") is "Sweet"
PASS Reflect.set(npobject, "Cocoa", "OK", receiver) is true
PASS Reflect.get(npobject, "Cocoa") is "Sweet"
PASS Reflect.get(receiver, "Cocoa") is "OK"
PASS Reflect.defineProperty(npobject, "Cocoa", {
    writable: false
}) is true
PASS Reflect.set(npobject, "Cocoa", "Hello") is false
PASS Reflect.get(npobject, "Cocoa") is "Sweet"
PASS Reflect.set(npobject, "Cocoa", "OK", receiver) is false
PASS Reflect.get(npobject, "Cocoa") is "Sweet"
PASS Reflect.get(receiver, "Cocoa") is undefined
PASS Reflect.set(npobject, 0, "Sweet") is true
PASS Reflect.get(npobject, 0) is "Sweet"
PASS Reflect.set(npobject, 0, "OK", receiver) is true
PASS Reflect.get(npobject, 0) is "Sweet"
PASS Reflect.get(receiver, 0) is "OK"
PASS Reflect.defineProperty(npobject, 0, {
    writable: false
}) is true
PASS Reflect.set(npobject, 0, "Hello") is false
PASS Reflect.get(npobject, 0) is "Sweet"
PASS Reflect.set(npobject, 0, "OK", receiver) is false
PASS Reflect.get(npobject, 0) is "Sweet"
PASS Reflect.get(receiver, 0) is undefined
DOMStringMap
PASS Reflect.get(document.body.dataset, "cocoa") is "cappuccino"
PASS Reflect.set(document.body.dataset, "cocoa", "sweet") is true
PASS Reflect.get(document.body.dataset, "cocoa") is "sweet"
PASS Reflect.set(document.body.dataset, "cocoa-cappuccino", "sweet") threw exception SyntaxError: The string did not match the expected pattern..
PASS Reflect.set(document.body.dataset, 0, "sweet") is true
PASS Reflect.get(document.body.dataset, 0) is "sweet"
DOMStringMap falls back to OrdinarySet if receiver is altered.
PASS Reflect.set(document.body.dataset, "cocoa", "ok", receiver) is true
PASS Reflect.get(document.body.dataset, "cocoa") is "sweet"
PASS Reflect.get(receiver, "cocoa") is "ok"
PASS Reflect.set(document.body.dataset, 0, "ok", receiver) is true
PASS Reflect.get(document.body.dataset, 0) is "sweet"
PASS Reflect.get(receiver, 0) is "ok"
CustomIndexedSetter
PASS Reflect.get(select, 0).value is "cocoa"
PASS Reflect.get(select, "length") is 3
PASS Reflect.set(select, 0, option) is true
PASS Reflect.get(select, 0).value is "mocha"
PASS Reflect.get(select, "length") is 3
PASS Reflect.set(select, 42, option) is true
PASS Reflect.get(select, "length") is 42
PASS Reflect.set(select, 44, option2) is true
PASS Reflect.get(select, 44).value is "kilimanjaro"
PASS Reflect.set(select, 20, "Kilimanjaro") threw exception TypeError: Type error.
CustomIndexedSetter falls back to OrdinarySet if receiver is altered.
PASS Reflect.set(select, 0, option3, receiver) is true
PASS Reflect.get(receiver, 0) is option3
PASS Reflect.get(select, 0) is select.children[0]
PASS successfullyParsed is true

TEST COMPLETE

