* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / Microsoft.JScript / Test / Mozilla / ecma_3 / RegExp / 15.10.3.1-2.js
1 /* ***** BEGIN LICENSE BLOCK *****
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * The contents of this file are subject to the Mozilla Public License Version
5  * 1.1 (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS" basis,
10  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11  * for the specific language governing rights and limitations under the
12  * License.
13  *
14  * The Original Code is mozilla.org code.
15  *
16  * The Initial Developer of the Original Code is
17  * Netscape Communications Corporation.
18  * Portions created by the Initial Developer are Copyright (C) 1998
19  * the Initial Developer. All Rights Reserved.
20  *
21  * Contributor(s):
22  *   pschwartau@netscape.com
23  *
24  * Alternatively, the contents of this file may be used under the terms of
25  * either the GNU General Public License Version 2 or later (the "GPL"), or
26  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27  * in which case the provisions of the GPL or the LGPL are applicable instead
28  * of those above. If you wish to allow use of your version of this file only
29  * under the terms of either the GPL or the LGPL, and not to allow others to
30  * use your version of this file under the terms of the MPL, indicate your
31  * decision by deleting the provisions above and replace them with the notice
32  * and other provisions required by the GPL or the LGPL. If you do not delete
33  * the provisions above, a recipient may use your version of this file under
34  * the terms of any one of the MPL, the GPL or the LGPL.
35  *
36  * ***** END LICENSE BLOCK *****
37  *
38  * Date: 26 November 2000
39  *
40  *
41  * SUMMARY: Passing (RegExp object, flag) to RegExp() function. 
42  * This test arose from Bugzilla bug 61266. The ECMA3 section is:       
43  *
44  * 15.10.3 The RegExp Constructor Called as a Function
45  *
46  *   15.10.3.1 RegExp(pattern, flags)
47  * 
48  *   If pattern is an object R whose [[Class]] property is "RegExp"
49  *   and flags is undefined, then return R unchanged.  Otherwise  
50  *   call the RegExp constructor (section 15.10.4.1),  passing it the
51  *   pattern and flags arguments and return  the object constructed
52  *   by that constructor.
53  *
54  *
55  * The current test will check the first scenario outlined above:
56  *
57  *   "pattern" is itself a RegExp object R
58  *   "flags" is undefined
59  *
60  * This test is identical to test 15.10.3.1-1.js, except here we do:
61  *
62  *                     RegExp(R, undefined);
63  *
64  * instead of:
65  *
66  *                     RegExp(R); 
67  *
68  *
69  * We check that RegExp(R, undefined) returns R  -
70  */
71 //-------------------------------------------------------------------------------------------------
72 var bug = '61266';
73 var summary = 'Passing (RegExp object,flag) to RegExp() function';
74 var statprefix = 'RegExp(new RegExp(';
75 var comma =  ', '; var singlequote = "'"; var closeparens = '))';
76 var cnSUCCESS = 'RegExp() returned the supplied RegExp object';
77 var cnFAILURE =  'RegExp() did NOT return the supplied RegExp object';
78 var i = -1; var j = -1; var s = ''; var f = '';
79 var obj = {};
80 var status = ''; var actual = ''; var expect = '';
81 var patterns = new Array();
82 var flags = new Array();  
83
84
85 // various regular expressions to try -
86 patterns[0] = '';
87 patterns[1] = 'abc';
88 patterns[2] = '(.*)(3-1)\s\w';
89 patterns[3] = '(.*)(...)\\s\\w';
90 patterns[4] = '[^A-Za-z0-9_]';
91 patterns[5] = '[^\f\n\r\t\v](123.5)([4 - 8]$)';
92
93 // various flags to try -
94 flags[0] = 'i';
95 flags[1] = 'g';
96 flags[2] = 'm';
97 flags[3] = undefined;
98
99
100
101 //-------------------------------------------------------------------------------------------------
102 test();
103 //-------------------------------------------------------------------------------------------------
104
105
106 function test() 
107 {
108   enterFunc ('test'); 
109   printBugNumber (bug);
110   printStatus (summary);
111
112   for (i in patterns)
113   {
114     s = patterns[i];
115
116     for (j in flags)
117     {
118       f = flags[j];
119       status = getStatus(s, f);
120       obj = new RegExp(s, f);   
121
122       actual = (obj == RegExp(obj, undefined))? cnSUCCESS : cnFAILURE ;
123       expect = cnSUCCESS;
124       reportCompare (expect, actual, status);
125     }
126   }
127   
128   exitFunc ('test');
129 }
130
131
132 function getStatus(regexp, flag)
133
134   return (statprefix  +  quote(regexp) +  comma  +   flag  +  closeparens); 
135 }
136
137
138 function quote(text)
139 {
140   return (singlequote  +  text  + singlequote);
141 }