mirror of https://github.com/tc39/test262.git
Proxy: Core
This commit is contained in:
parent
a1437652ab
commit
9bbe7c6272
|
@ -0,0 +1,10 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 26.2.1
|
||||
description: >
|
||||
The Proxy constructor is the %Proxy% intrinsic object and the
|
||||
initial value of the Proxy property of the global object.
|
||||
---*/
|
||||
|
||||
assert.sameValue(typeof Proxy, "function", "`typeof Proxy` is `'function'`");
|
|
@ -0,0 +1,20 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
4. If handler is a Proxy exotic object and the value of the
|
||||
[[ProxyHandler]] internal slot of handler is null, throw a
|
||||
TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
var revocable = Proxy.revocable({}, {});
|
||||
|
||||
revocable.revoke();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy({}, revocable.proxy);
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
3. If Type(handler) is not Object, throw a TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy({}, false);
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
3. If Type(handler) is not Object, throw a TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy({}, null);
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
3. If Type(handler) is not Object, throw a TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy({}, 0);
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
3. If Type(handler) is not Object, throw a TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy({}, "");
|
||||
});
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
3. If Type(handler) is not Object, throw a TypeError exception.
|
||||
...
|
||||
features: [Symbol]
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy({}, Symbol());
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
3. If Type(handler) is not Object, throw a TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy({}, undefined);
|
||||
});
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
A Proxy exotic object is only callable if the given target is callable.
|
||||
info: >
|
||||
Proxy ( target, handler )
|
||||
|
||||
7. If IsCallable(target) is true, then
|
||||
a. Set the [[Call]] internal method of P as specified in 9.5.13.
|
||||
...
|
||||
|
||||
|
||||
12.3.4.3 Runtime Semantics: EvaluateDirectCall( func, thisValue, arguments,
|
||||
tailPosition )
|
||||
|
||||
4. If IsCallable(func) is false, throw a TypeError exception.
|
||||
---*/
|
||||
|
||||
var p = new Proxy({}, {});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
p.call();
|
||||
});
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
A Proxy exotic object only accepts a constructor call if target is
|
||||
constructor.
|
||||
info: >
|
||||
Proxy ( target, handler )
|
||||
|
||||
7. If IsCallable(target) is true, then
|
||||
b. If target has a [[Construct]] internal method, then
|
||||
i. Set the [[Construct]] internal method of P as specified in
|
||||
9.5.14.
|
||||
...
|
||||
|
||||
12.3.3.1.1 Runtime Semantics: EvaluateNew(constructProduction, arguments)
|
||||
|
||||
8. If IsConstructor (constructor) is false, throw a TypeError exception.
|
||||
---*/
|
||||
|
||||
var p = new Proxy(eval, {});
|
||||
|
||||
p(); // the Proxy object is callable
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new p();
|
||||
});
|
|
@ -0,0 +1,20 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
2. If target is a Proxy exotic object and the value of the
|
||||
[[ProxyHandler]] internal slot of target is null, throw a
|
||||
TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
var revocable = Proxy.revocable({}, {});
|
||||
|
||||
revocable.revoke();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy(revocable.proxy, {});
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
1. If Type(target) is not Object, throw a TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy(false, {});
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
1. If Type(target) is not Object, throw a TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy(null, {});
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
1. If Type(target) is not Object, throw a TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy(0, {});
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
1. If Type(target) is not Object, throw a TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy("", {});
|
||||
});
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
1. If Type(target) is not Object, throw a TypeError exception.
|
||||
...
|
||||
features: [Symbol]
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy(Symbol(), {});
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 9.5.15
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
...
|
||||
1. If Type(target) is not Object, throw a TypeError exception.
|
||||
...
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Proxy(undefined, {});
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 26.2.2
|
||||
description: >
|
||||
The value of the [[Prototype]] internal slot of the Proxy
|
||||
constructor is the intrinsic object %FunctionPrototype% (19.2.3).
|
||||
---*/
|
||||
|
||||
assert.sameValue(
|
||||
Object.getPrototypeOf(Proxy),
|
||||
Function.prototype,
|
||||
"`Object.getPrototypeOf(Proxy)` returns `Function.prototype`"
|
||||
);
|
|
@ -0,0 +1,17 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 26.2.2
|
||||
description: >
|
||||
Properties of the Proxy Constructor
|
||||
|
||||
Besides the length property (whose value is 2)
|
||||
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
assert.sameValue(Proxy.length, 2, "The value of `Proxy.length` is `2`");
|
||||
|
||||
verifyNotEnumerable(Proxy, "length");
|
||||
verifyNotWritable(Proxy, "length");
|
||||
verifyConfigurable(Proxy, "length");
|
|
@ -0,0 +1,17 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 26.2.1.1
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
|
||||
17 ECMAScript Standard Built-in Objects
|
||||
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
assert.sameValue(Proxy.name, "Proxy", "The value of `Proxy.name` is `'Proxy'`");
|
||||
|
||||
verifyNotEnumerable(Proxy, "name");
|
||||
verifyNotWritable(Proxy, "name");
|
||||
verifyConfigurable(Proxy, "name");
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 26.2.1.1
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
|
||||
When Proxy is called with arguments target and handler performs
|
||||
the following steps:
|
||||
|
||||
...
|
||||
2. Return ProxyCreate(target, handler). (9.5.15)
|
||||
...
|
||||
9.5.15 ProxyCreate(target, handler)
|
||||
...
|
||||
5. Let P be a newly created object.
|
||||
...
|
||||
10. Return P.
|
||||
|
||||
---*/
|
||||
|
||||
var p1 = new Proxy({}, {});
|
||||
|
||||
assert.sameValue(
|
||||
typeof p1,
|
||||
'object',
|
||||
'Return a newly created Object'
|
||||
);
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 26.2.2
|
||||
description: >
|
||||
The Proxy constructor does not have a prototype property because
|
||||
proxy exotic objects do not have a [[Prototype]] internal slot
|
||||
that requires initialization.
|
||||
---*/
|
||||
|
||||
assert.sameValue(Object.hasOwnProperty.call(Proxy, 'prototype'), false);
|
|
@ -0,0 +1,22 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 26.2.1.1
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
|
||||
When Proxy is called with arguments target and handler performs
|
||||
the following steps:
|
||||
|
||||
1. If NewTarget is undefined, throw a TypeError exception.
|
||||
...
|
||||
|
||||
---*/
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
Proxy();
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
Proxy([]);
|
||||
});
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 26.2.1.1
|
||||
description: >
|
||||
Proxy ( target, handler )
|
||||
|
||||
17 ECMAScript Standard Built-in Objects
|
||||
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
verifyNotEnumerable(this, "Proxy");
|
||||
verifyWritable(this, "Proxy");
|
||||
verifyConfigurable(this, "Proxy");
|
Loading…
Reference in New Issue