|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 |
|
7 /** |
|
8 Filename: string_replace.js |
|
9 Description: 'Tests the replace method on Strings using regular expressions' |
|
10 |
|
11 Author: Nick Lerissa |
|
12 Date: March 11, 1998 |
|
13 */ |
|
14 |
|
15 var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"'; |
|
16 var VERSION = 'no version'; |
|
17 startTest(); |
|
18 var TITLE = 'String: replace'; |
|
19 |
|
20 writeHeaderToLog('Executing script: string_replace.js'); |
|
21 writeHeaderToLog( SECTION + " "+ TITLE); |
|
22 |
|
23 |
|
24 // 'adddb'.replace(/ddd/,"XX") |
|
25 new TestCase ( SECTION, "'adddb'.replace(/ddd/,'XX')", |
|
26 "aXXb", 'adddb'.replace(/ddd/,'XX')); |
|
27 |
|
28 // 'adddb'.replace(/eee/,"XX") |
|
29 new TestCase ( SECTION, "'adddb'.replace(/eee/,'XX')", |
|
30 'adddb', 'adddb'.replace(/eee/,'XX')); |
|
31 |
|
32 // '34 56 78b 12'.replace(new RegExp('[0-9]+b'),'**') |
|
33 new TestCase ( SECTION, "'34 56 78b 12'.replace(new RegExp('[0-9]+b'),'**')", |
|
34 "34 56 ** 12", '34 56 78b 12'.replace(new RegExp('[0-9]+b'),'**')); |
|
35 |
|
36 // '34 56 78b 12'.replace(new RegExp('[0-9]+c'),'XX') |
|
37 new TestCase ( SECTION, "'34 56 78b 12'.replace(new RegExp('[0-9]+c'),'XX')", |
|
38 "34 56 78b 12", '34 56 78b 12'.replace(new RegExp('[0-9]+c'),'XX')); |
|
39 |
|
40 // 'original'.replace(new RegExp(),'XX') |
|
41 new TestCase ( SECTION, "'original'.replace(new RegExp(),'XX')", |
|
42 "XXoriginal", 'original'.replace(new RegExp(),'XX')); |
|
43 |
|
44 // 'qwe ert x\t\n 345654AB'.replace(new RegExp('x\s*\d+(..)$'),'****') |
|
45 new TestCase ( SECTION, "'qwe ert x\t\n 345654AB'.replace(new RegExp('x\\s*\\d+(..)$'),'****')", |
|
46 "qwe ert ****", 'qwe ert x\t\n 345654AB'.replace(new RegExp('x\\s*\\d+(..)$'),'****')); |
|
47 |
|
48 |
|
49 /* |
|
50 * Test replacement over ropes. The char to rope node ratio must be sufficiently |
|
51 * high for the special-case code to be tested. |
|
52 */ |
|
53 var stringA = "abcdef"; |
|
54 var stringB = "ghijk"; |
|
55 var stringC = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"; |
|
56 stringC += stringC; |
|
57 stringC += stringC; |
|
58 stringC[0]; /* flatten stringC */ |
|
59 var stringD = "lmn"; |
|
60 |
|
61 new TestCase ( SECTION, "(stringA + stringB + stringC).replace('aa', '')", |
|
62 stringA + stringB + stringC, (stringA + stringB + stringC).replace('aa', '')); |
|
63 |
|
64 new TestCase ( SECTION, "(stringA + stringB + stringC).replace('abc', 'AA')", |
|
65 "AAdefghijk" + stringC, (stringA + stringB + stringC).replace('abc', 'AA')); |
|
66 |
|
67 new TestCase ( SECTION, "(stringA + stringB + stringC).replace('def', 'AA')", |
|
68 "abcAAghijk" + stringC, (stringA + stringB + stringC).replace('def', 'AA')); |
|
69 |
|
70 new TestCase ( SECTION, "(stringA + stringB + stringC).replace('efg', 'AA')", |
|
71 "abcdAAhijk" + stringC, (stringA + stringB + stringC).replace('efg', 'AA')); |
|
72 |
|
73 new TestCase ( SECTION, "(stringA + stringB + stringC).replace('fgh', 'AA')", |
|
74 "abcdeAAijk" + stringC, (stringA + stringB + stringC).replace('fgh', 'AA')); |
|
75 |
|
76 new TestCase ( SECTION, "(stringA + stringB + stringC).replace('ghi', 'AA')", |
|
77 "abcdefAAjk" + stringC, (stringA + stringB + stringC).replace('ghi', 'AA')); |
|
78 |
|
79 new TestCase ( SECTION, "(stringC + stringD).replace('lmn', 'AA')", |
|
80 stringC + "AA", (stringC + stringD).replace('lmn', 'AA')); |
|
81 |
|
82 new TestCase ( SECTION, "(stringC + stringD).replace('lmno', 'AA')", |
|
83 stringC + stringD, (stringC + stringD).replace('lmno', 'AA')); |
|
84 |
|
85 new TestCase ( SECTION, "(stringC + stringD).replace('mn', 'AA')", |
|
86 stringC + "lAA", (stringC + stringD).replace('mn', 'AA')); |
|
87 |
|
88 new TestCase ( SECTION, "(stringC + stringD).replace('n', 'AA')", |
|
89 stringC + "lmAA", (stringC + stringD).replace('n', 'AA')); |
|
90 |
|
91 |
|
92 test(); |