blob: 5cd5ce9ab1ddef35572b822631c171843480949d [file] [log] [blame]
function assert(b) {
if (!b)
throw new Error("Bad assertion");
}
// Setting the getter only.
(function () {
let target = {};
let called = false;
let handler = {
defineProperty: function(theTarget, propName, descriptor) {
called = true;
return Reflect.defineProperty(theTarget, propName, descriptor);
}
};
let proxy = new Proxy(target, handler);
for (let i = 0; i < 500; i++) {
let result = Reflect.defineProperty(proxy, "x", {
enumerable: true,
configurable: true,
get: function(){},
});
assert(result);
assert(called);
called = false;
for (let obj of [target, proxy]) {
let pDesc = Object.getOwnPropertyDescriptor(obj, "x");
assert(typeof pDesc.get === "function");
assert(typeof pDesc.set === "undefined");
assert(pDesc.get.toString() === (function(){}).toString());
assert(pDesc.configurable === true);
assert(pDesc.enumerable === true);
}
}
})();
// Setting the setter only.
(function () {
let target = {};
let called = false;
let handler = {
defineProperty: function(theTarget, propName, descriptor) {
called = true;
return Reflect.defineProperty(theTarget, propName, descriptor);
}
};
let proxy = new Proxy(target, handler);
for (let i = 0; i < 500; i++) {
let result = Reflect.defineProperty(proxy, "x", {
enumerable: true,
configurable: true,
set: function(x){},
});
assert(result);
assert(called);
called = false;
for (let obj of [target, proxy]) {
let pDesc = Object.getOwnPropertyDescriptor(obj, "x");
assert(typeof pDesc.get === "undefined");
assert(typeof pDesc.set === "function");
assert(pDesc.set.toString() === (function(x){}).toString());
assert(pDesc.configurable === true);
assert(pDesc.enumerable === true);
}
}
})();