[ES6] Implement Reflect.preventExtensions
[WebKit-https.git] / Source / JavaScriptCore / tests / stress / reflect-prevent-extensions.js
1 function shouldBe(actual, expected) {
2     if (actual !== expected)
3         throw new Error('bad value: ' + actual);
4 }
5
6 function shouldThrow(func, message) {
7     var error = null;
8     try {
9         func();
10     } catch (e) {
11         error = e;
12     }
13     if (!error)
14         throw new Error("not thrown.");
15     if (String(error) !== message)
16         throw new Error("bad error: " + String(error));
17 }
18
19 shouldBe(Reflect.preventExtensions.length, 1);
20
21 shouldThrow(() => {
22     Reflect.preventExtensions("hello");
23 }, `TypeError: Reflect.preventExtensions requires the first argument be an object`);
24
25 var object = { hello: 42 };
26 shouldBe(Reflect.isExtensible(object), true);
27 shouldBe(Reflect.preventExtensions(object), true);
28 shouldBe(Reflect.isExtensible(object), false);
29
30 object.ok = 42;
31 shouldBe(object.hasOwnProperty('ok'), false);