Skip to content
Snippets Groups Projects
Commit c38f1d12 authored by Aleksey Shvayka's avatar Aleksey Shvayka
Browse files

add groups object tests

parent a2f44c71
No related branches found
No related tags found
No related merge requests found
// Copyright 2017 Aleksey Shvayka. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: Properties of the groups object are created with CreateDataProperty
includes: [propertyHelper.js]
esid: sec-regexpbuiltinexec
features: [regexp-named-groups]
info: >
Runtime Semantics: RegExpBuiltinExec ( R, S )
24. If R contains any GroupName,
a. Let groups be ObjectCreate(null).
b. Perform ! CreateDataProperty(A, "groups", groups).
---*/
// groups is created with Define, not Set
let counter = 0;
Object.defineProperty(Array.prototype, "groups", {set() { counter++; }});
let match = /(?<x>.)/.exec("a");
assert.sameValue(counter, 0);
// groups is writable, enumerable and configurable
// (from CreateDataProperty)
verifyProperty(match, "groups", {
writable: true,
enumerable: true,
configurable: true,
});
// The '__proto__' property on the groups object is not special,
// and does not affect the [[Prototype]] of the resulting groups object.
let {groups} = /(?<__proto__>.)/.exec("a");
assert.sameValue("a", groups.__proto__);
assert.sameValue(null, Object.getPrototypeOf(groups));
......@@ -31,9 +31,3 @@ assert.sameValue(counter, 0);
verifyWritable(groups, "x");
verifyEnumerable(groups, "x");
verifyConfigurable(groups, "x");
// The '__proto__' property on the groups object is not special,
// and does not affect the [[Prototype]] of the resulting groups object.
groups = /(?<__proto__>a)/u.exec("a").groups;
assert.sameValue("a", groups.__proto__);
assert.sameValue(null, Object.getPrototypeOf(groups));
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment