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