String.replace(…) test

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS testString is "It's the end of the world as we know it, and I feel fine."
PASS testString.replace('end','BEGINNING') is "It's the BEGINNING of the world as we know it, and I feel fine."
PASS testString.replace(/[aeiou]/gi,'-') is "-t's th- -nd -f th- w-rld -s w- kn-w -t, -nd - f--l f-n-."
PASS testString.replace(/[aeiou]/gi, function Capitalize(s){ return s.toUpperCase(); }) is "It's thE End Of thE wOrld As wE knOw It, And I fEEl fInE."
FAIL testString.replace(/([aeiou])([a-z])/g, function Capitalize(){ return RegExp.$1.toUpperCase()+RegExp.$2; }) should be It's the End Of the wOrld As we knOw It, And I fEel fIne.. Was It's the Ind In the wInld In we knIn In, Ind I fInl fIne..
PASS testString.replace(/([aeiou])([a-z])/g, function Capitalize(orig,re1,re2) { return re1.toUpperCase()+re2; }) is "It's the End Of the wOrld As we knOw It, And I fEel fIne."
PASS testString.replace(/(.*)/g, function replaceWithDollars(matchGroup) { return '$1'; }) is "$1$1"
PASS testString.replace(/(.)(.*)/g, function replaceWithMultipleDollars(matchGroup) { return '$1$2'; }) is "$1$2"
PASS testString.replace(/(.)(.*)/, function checkReplacementArguments() { return arguments.length; }) is "5"
PASS testReplace(/x/g, false) is "0y1y2"
PASS testReplace(/x/g, true) threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'.
PASS testReplace(/x/, false) is "0y1x2"
PASS testReplace(/x/, true) is "0y1x2"
PASS testReplace(/x/g, false); re.lastIndex is 0
PASS testReplace(/x/g, true); re.lastIndex threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'.
PASS testReplace(/x/, false); re.lastIndex is 3
PASS testReplace(/x/, true); re.lastIndex is 3
PASS testReplace(/x/g, false) is "0y1y2"
PASS testReplace(/x/g, true) threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'.
PASS testReplace(/x/, false) is "0y1x2"
PASS testReplace(/x/, true) is "0y1x2"
PASS testReplace(/x/g, false); re.lastIndex is 0
PASS testReplace(/x/g, true); re.lastIndex threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'.
PASS testReplace(/x/, false); re.lastIndex is 3
PASS testReplace(/x/, true); re.lastIndex is 3
PASS testReplace(/x/g, false) is "01122"
PASS testReplace(/x/g, true) threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'.
PASS testReplace(/x/, false) is "041x2"
PASS testReplace(/x/, true) threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'.
PASS testReplace(/x/g, false); re.lastIndex is 2
PASS testReplace(/x/g, true); re.lastIndex threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'.
PASS testReplace(/x/, false); re.lastIndex is 4
PASS testReplace(/x/, true); re.lastIndex threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'.
PASS try { testReplace(/x/g, false); throw 0; } catch (e) { }; replacerCalled; is true
PASS try { testReplace(/x/g, true); throw 0; } catch (e) { }; replacerCalled; is false
PASS successfullyParsed is true

TEST COMPLETE

