/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /** Filename: string_replace.js Description: 'Tests the replace method on Strings using regular expressions' Author: Nick Lerissa Date: March 11, 1998 */ var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; var VERSION = 'no version'; startTest(); var TITLE = 'String: replace'; writeHeaderToLog('Executing script: string_replace.js'); writeHeaderToLog( SECTION + " "+ TITLE); // 'adddb'.replace(/ddd/,"XX") new TestCase ( SECTION, "'adddb'.replace(/ddd/,'XX')", "aXXb", 'adddb'.replace(/ddd/,'XX')); // 'adddb'.replace(/eee/,"XX") new TestCase ( SECTION, "'adddb'.replace(/eee/,'XX')", 'adddb', 'adddb'.replace(/eee/,'XX')); // '34 56 78b 12'.replace(new RegExp('[0-9]+b'),'**') new TestCase ( SECTION, "'34 56 78b 12'.replace(new RegExp('[0-9]+b'),'**')", "34 56 ** 12", '34 56 78b 12'.replace(new RegExp('[0-9]+b'),'**')); // '34 56 78b 12'.replace(new RegExp('[0-9]+c'),'XX') new TestCase ( SECTION, "'34 56 78b 12'.replace(new RegExp('[0-9]+c'),'XX')", "34 56 78b 12", '34 56 78b 12'.replace(new RegExp('[0-9]+c'),'XX')); // 'original'.replace(new RegExp(),'XX') new TestCase ( SECTION, "'original'.replace(new RegExp(),'XX')", "XXoriginal", 'original'.replace(new RegExp(),'XX')); // 'qwe ert x\t\n 345654AB'.replace(new RegExp('x\s*\d+(..)$'),'****') new TestCase ( SECTION, "'qwe ert x\t\n 345654AB'.replace(new RegExp('x\\s*\\d+(..)$'),'****')", "qwe ert ****", 'qwe ert x\t\n 345654AB'.replace(new RegExp('x\\s*\\d+(..)$'),'****')); /* * Test replacement over ropes. The char to rope node ratio must be sufficiently * high for the special-case code to be tested. */ var stringA = "abcdef"; var stringB = "ghijk"; var stringC = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"; stringC += stringC; stringC += stringC; stringC[0]; /* flatten stringC */ var stringD = "lmn"; new TestCase ( SECTION, "(stringA + stringB + stringC).replace('aa', '')", stringA + stringB + stringC, (stringA + stringB + stringC).replace('aa', '')); new TestCase ( SECTION, "(stringA + stringB + stringC).replace('abc', 'AA')", "AAdefghijk" + stringC, (stringA + stringB + stringC).replace('abc', 'AA')); new TestCase ( SECTION, "(stringA + stringB + stringC).replace('def', 'AA')", "abcAAghijk" + stringC, (stringA + stringB + stringC).replace('def', 'AA')); new TestCase ( SECTION, "(stringA + stringB + stringC).replace('efg', 'AA')", "abcdAAhijk" + stringC, (stringA + stringB + stringC).replace('efg', 'AA')); new TestCase ( SECTION, "(stringA + stringB + stringC).replace('fgh', 'AA')", "abcdeAAijk" + stringC, (stringA + stringB + stringC).replace('fgh', 'AA')); new TestCase ( SECTION, "(stringA + stringB + stringC).replace('ghi', 'AA')", "abcdefAAjk" + stringC, (stringA + stringB + stringC).replace('ghi', 'AA')); new TestCase ( SECTION, "(stringC + stringD).replace('lmn', 'AA')", stringC + "AA", (stringC + stringD).replace('lmn', 'AA')); new TestCase ( SECTION, "(stringC + stringD).replace('lmno', 'AA')", stringC + stringD, (stringC + stringD).replace('lmno', 'AA')); new TestCase ( SECTION, "(stringC + stringD).replace('mn', 'AA')", stringC + "lAA", (stringC + stringD).replace('mn', 'AA')); new TestCase ( SECTION, "(stringC + stringD).replace('n', 'AA')", stringC + "lmAA", (stringC + stringD).replace('n', 'AA')); test();