diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /js/src/tests/non262/String/15.5.4.11-01.js | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/non262/String/15.5.4.11-01.js')
-rw-r--r-- | js/src/tests/non262/String/15.5.4.11-01.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/js/src/tests/non262/String/15.5.4.11-01.js b/js/src/tests/non262/String/15.5.4.11-01.js new file mode 100644 index 0000000000..2125cbf829 --- /dev/null +++ b/js/src/tests/non262/String/15.5.4.11-01.js @@ -0,0 +1,66 @@ +/* + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/licenses/publicdomain/ + */ + +var BUGNUMBER = 587366; +var summary = "String.prototype.replace with non-regexp searchValue"; + +print(BUGNUMBER + ": " + summary); + +/************** + * BEGIN TEST * + **************/ + +/* + * Check that regexp statics are preserved across the whole test. + * If the engine is trying to cheat by turning stuff into regexps, + * we should catch it! + */ +/(a|(b)|c)+/.exec('abcabc'); +var before = { + "source" : RegExp.source, + "$`": RegExp.leftContext, + "$'": RegExp.rightContext, + "$&": RegExp.lastMatch, + "$1": RegExp.$1, + "$2": RegExp.$2 +}; + +var text = 'I once was lost but now am found.'; +var searchValue = 'found'; +var replaceValue; + +/* Lambda substitution. */ +replaceValue = function(matchStr, matchStart, textStr) { + assertEq(matchStr, searchValue); + assertEq(matchStart, 27); + assertEq(textStr, text); + return 'not watching that show anymore'; +} +var result = text.replace(searchValue, replaceValue); +assertEq(result, 'I once was lost but now am not watching that show anymore.'); + +/* Dollar substitution. */ +replaceValue = "...wait, where was I again? And where is all my $$$$$$? Oh right, $`$&$'" + + " But with no $$$$$$"; /* Note the dot is not replaced and trails the end. */ +result = text.replace(searchValue, replaceValue); +assertEq(result, 'I once was lost but now am ...wait, where was I again?' + + ' And where is all my $$$? Oh right, I once was lost but now am found.' + + ' But with no $$$.'); + +/* Missing capture group dollar substitution. */ +replaceValue = "$1$&$2$'$3"; +result = text.replace(searchValue, replaceValue); +assertEq(result, 'I once was lost but now am $1found$2.$3.'); + +/* Check RegExp statics haven't been mutated. */ +for (var ident in before) + assertEq(RegExp[ident], before[ident]); + +/******************************************************************************/ + +if (typeof reportCompare === "function") + reportCompare(true, true); + +print("All tests passed!"); |