1/**
2 *  File Name:          RegExp/properties-001.js
3 *  ECMA Section:       15.7.6.js
4 *  Description:        Based on ECMA 2 Draft 7 February 1999
5 *
6 *  Author:             christine@netscape.com
7 *  Date:               19 February 1999
8 */
9    var SECTION = "RegExp/properties-001.js";
10    var VERSION = "ECMA_2";
11    var TITLE   = "Properties of RegExp Instances";
12    var BUGNUMBER ="http://scopus/bugsplat/show_bug.cgi?id=346000";
13
14    startTest();
15
16    AddRegExpCases( new RegExp, "",   false, false, false, 0 );
17    AddRegExpCases( /.*/,       ".*", false, false, false, 0 );
18    AddRegExpCases( /[\d]{5}/g, "[\\d]{5}", true, false, false, 0 );
19    AddRegExpCases( /[\S]?$/i,  "[\\S]?$", false, true, false, 0 );
20    AddRegExpCases( /^([a-z]*)[^\w\s\f\n\r]+/m,  "^([a-z]*)[^\\w\\s\\f\\n\\r]+", false, false, true, 0 );
21    AddRegExpCases( /[\D]{1,5}[\ -][\d]/gi,      "[\\D]{1,5}[\\ -][\\d]", true, true, false, 0 );
22    AddRegExpCases( /[a-zA-Z0-9]*/gm, "[a-zA-Z0-9]*", true, false, true, 0 );
23    AddRegExpCases( /x|y|z/gim, "x|y|z", true, true, true, 0 );
24
25    AddRegExpCases( /\u0051/im, "\\u0051", false, true, true, 0 );
26    AddRegExpCases( /\x45/gm, "\\x45", true, false, true, 0 );
27    AddRegExpCases( /\097/gi, "\\097", true, true, false, 0 );
28
29    test();
30
31function AddRegExpCases( re, s, g, i, m, l ) {
32
33    AddTestCase( re + ".test == RegExp.prototype.test",
34                 true,
35                 re.test == RegExp.prototype.test );
36
37    AddTestCase( re + ".toString == RegExp.prototype.toString",
38                 true,
39                 re.toString == RegExp.prototype.toString );
40
41    AddTestCase( re + ".contructor == RegExp.prototype.constructor",
42                 true,
43                 re.constructor == RegExp.prototype.constructor );
44
45    AddTestCase( re + ".compile == RegExp.prototype.compile",
46                 true,
47                 re.compile == RegExp.prototype.compile );
48
49    AddTestCase( re + ".exec == RegExp.prototype.exec",
50                 true,
51                 re.exec == RegExp.prototype.exec );
52
53    // properties
54
55    AddTestCase( re + ".source",
56                 s,
57                 re.source );
58
59/*
60 * http://bugzilla.mozilla.org/show_bug.cgi?id=225550 changed
61 * the behavior of toString() and toSource() on empty regexps.
62 * So branch if |s| is the empty string -
63 */
64    var S = s? s : '(?:)';
65
66    AddTestCase( re + ".toString()",
67                 "/" + S +"/" + (g?"g":"") + (i?"i":"") +(m?"m":""),
68                 re.toString() );
69
70    AddTestCase( re + ".global",
71                 g,
72                 re.global );
73
74    AddTestCase( re + ".ignoreCase",
75                 i,
76                 re.ignoreCase );
77
78    AddTestCase( re + ".multiline",
79                 m,
80                 re.multiline);
81
82    AddTestCase( re + ".lastIndex",
83                 l,
84                 re.lastIndex  );
85}
86