summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/RegExp/replace.js
blob: 43522ab551017df904019332d073de380a696ddd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var BUGNUMBER = 887016;
var summary = "Implement RegExp.prototype[@@replace].";

print(BUGNUMBER + ": " + summary);

assertEq(RegExp.prototype[Symbol.replace].name, "[Symbol.replace]");
assertEq(RegExp.prototype[Symbol.replace].length, 2);
var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, Symbol.replace);
assertEq(desc.configurable, true);
assertEq(desc.enumerable, false);
assertEq(desc.writable, true);

var re = /a/;
var v = re[Symbol.replace]("abcAbcABC", "X");
assertEq(v, "XbcAbcABC");

re = /d/;
v = re[Symbol.replace]("abcAbcABC", "X");
assertEq(v, "abcAbcABC");

re = /a/ig;
v = re[Symbol.replace]("abcAbcABC", "X");
assertEq(v, "XbcXbcXBC");

re = /(a)(b)(cd)/;
v = re[Symbol.replace]("012abcd345", "_$$_$&_$`_$'_$0_$1_$2_$3_$4_$+_$");
assertEq(v, "012_$_abcd_012_345_$0_a_b_cd_$4_cd_$345");

re = /(a)(b)(cd)/;
v = re[Symbol.replace]("012abcd345", "_\u3042_$$_$&_$`_$'_$0_$1_$2_$3_$4_$+_$");
assertEq(v, "012_\u3042_$_abcd_012_345_$0_a_b_cd_$4_cd_$345");

if (typeof reportCompare === "function")
    reportCompare(true, true);