Index: test/mjsunit/harmony/regexp-flags.js |
diff --git a/test/mjsunit/harmony/regexp-flags.js b/test/mjsunit/harmony/regexp-flags.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b20044343b8ef55830492c1185dc2a1adbfde151 |
--- /dev/null |
+++ b/test/mjsunit/harmony/regexp-flags.js |
@@ -0,0 +1,40 @@ |
+// Copyright 2014 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-regexps |
+ |
+delete RegExp.prototype.flags; |
+RegExp.prototype.flags = 'setter should be undefined'; |
+ |
+assertEquals('', RegExp('').flags); |
+assertEquals('', /./.flags); |
+assertEquals('gimy', RegExp('', 'ygmi').flags); |
+assertEquals('gimy', /foo/ymig.flags); |
+ |
+// TODO(dslomov): When support for the `u` flag is added, uncomment the first |
+// line below and remove the second line. |
+//assertEquals(RegExp('', 'yumig').flags, 'gimuy'); |
+assertThrows(function() { RegExp('', 'yumig').flags; }, SyntaxError); |
+ |
+var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags'); |
+assertFalse(descriptor.configurable); |
+assertFalse(descriptor.enumerable); |
+assertInstanceof(descriptor.get, Function); |
+assertEquals(undefined, descriptor.set); |
+ |
+function testGenericFlags(object) { |
+ return descriptor.get.call(object); |
+} |
+ |
+assertEquals('', testGenericFlags({})); |
+assertEquals('i', testGenericFlags({ ignoreCase: true })); |
+assertEquals('uy', testGenericFlags({ global: 0, sticky: 1, unicode: 1 })); |
+assertEquals('m', testGenericFlags({ __proto__: { multiline: true } })); |
+assertThrows(function() { testGenericFlags(); }, TypeError); |
+assertThrows(function() { testGenericFlags(undefined); }, TypeError); |
+assertThrows(function() { testGenericFlags(null); }, TypeError); |
+assertThrows(function() { testGenericFlags(true); }, TypeError); |
+assertThrows(function() { testGenericFlags(false); }, TypeError); |
+assertThrows(function() { testGenericFlags(''); }, TypeError); |
+assertThrows(function() { testGenericFlags(42); }, TypeError); |