summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/harmony/proxies-has-own-property.js
blob: 1455d2b273d73b415d9649e04df2f768b4f7be4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Copyright 2015 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --harmony-proxies

var handler = {};
var target = {a:1};
var proxy = new Proxy(target, handler);

assertTrue(target.hasOwnProperty('a'));
assertTrue(proxy.hasOwnProperty('a'));
assertFalse(target.hasOwnProperty('b'));
assertFalse(proxy.hasOwnProperty('b'));


handler.has = function() { assertUnreachable() }
handler.getOwnPropertyDescriptor = function () {}

assertTrue(target.hasOwnProperty('a'));
assertFalse(proxy.hasOwnProperty('a'));
assertFalse(target.hasOwnProperty('b'));
assertFalse(proxy.hasOwnProperty('b'));


handler.getOwnPropertyDescriptor = function() { return {configurable: true} }

assertTrue(target.hasOwnProperty('a'));
assertTrue(proxy.hasOwnProperty('a'));
assertFalse(target.hasOwnProperty('b'));
assertTrue(proxy.hasOwnProperty('b'));


handler.getOwnPropertyDescriptor = function() { throw Error(); }

assertTrue(target.hasOwnProperty('a'));
assertThrows(function(){ proxy.hasOwnProperty('a') }, Error);
assertFalse(target.hasOwnProperty('b'));
assertThrows(function(){ proxy.hasOwnProperty('b') }, Error);