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