From c38f1d12b0256b9899a04da3e72c90a6045ddda8 Mon Sep 17 00:00:00 2001 From: Aleksey Shvayka <shvaikalesh@gmail.com> Date: Fri, 23 Jun 2017 22:59:57 +0300 Subject: [PATCH] add groups object tests --- .../RegExp/named-groups/groups-object.js | 34 +++++++++++++++++++ .../RegExp/named-groups/groups-properties.js | 6 ---- 2 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 test/built-ins/RegExp/named-groups/groups-object.js diff --git a/test/built-ins/RegExp/named-groups/groups-object.js b/test/built-ins/RegExp/named-groups/groups-object.js new file mode 100644 index 0000000000..a7d2b5433c --- /dev/null +++ b/test/built-ins/RegExp/named-groups/groups-object.js @@ -0,0 +1,34 @@ +// 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)); diff --git a/test/built-ins/RegExp/named-groups/groups-properties.js b/test/built-ins/RegExp/named-groups/groups-properties.js index 6d7b46ec63..8cf12152ce 100644 --- a/test/built-ins/RegExp/named-groups/groups-properties.js +++ b/test/built-ins/RegExp/named-groups/groups-properties.js @@ -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)); -- GitLab