mirror of
https://github.com/tc39/test262.git
synced 2025-05-04 15:00:42 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
45 lines
999 B
JavaScript
45 lines
999 B
JavaScript
function shouldBe(actual, expected) {
|
|
if (actual !== expected)
|
|
throw new Error('bad value: ' + actual);
|
|
}
|
|
|
|
function test(object)
|
|
{
|
|
return "hello" in object;
|
|
}
|
|
noInline(test);
|
|
|
|
var count = 0;
|
|
var target = null;
|
|
var key = null;
|
|
var handler = {
|
|
has(targetArg, keyArg) {
|
|
++count;
|
|
target = targetArg;
|
|
key = keyArg;
|
|
return keyArg in targetArg;
|
|
}
|
|
};
|
|
var targetObject = {};
|
|
var proxy = new Proxy(targetObject, handler);
|
|
for (var i = 0; i < 1e4; ++i) {
|
|
shouldBe(count, i);
|
|
shouldBe(test(proxy), false);
|
|
shouldBe(target, targetObject);
|
|
shouldBe(key, "hello");
|
|
}
|
|
targetObject.hello = 42;
|
|
for (var i = 0; i < 1e4; ++i) {
|
|
shouldBe(count, i + 1e4);
|
|
shouldBe(test(proxy), true);
|
|
shouldBe(target, targetObject);
|
|
shouldBe(key, "hello");
|
|
}
|
|
delete targetObject.hello;
|
|
for (var i = 0; i < 1e4; ++i) {
|
|
shouldBe(count, i + 2e4);
|
|
shouldBe(test(proxy), false);
|
|
shouldBe(target, targetObject);
|
|
shouldBe(key, "hello");
|
|
}
|