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