18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  File Name:          RegExp/properties-001.js
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  ECMA Section:       15.7.6.js
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Description:        Based on ECMA 2 Draft 7 February 1999
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Author:             christine@netscape.com
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Date:               19 February 1999
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var SECTION = "RegExp/properties-001.js";
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var VERSION = "ECMA_2";
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var TITLE   = "Properties of RegExp Instances";
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var BUGNUMBER ="http://scopus/bugsplat/show_bug.cgi?id=346000";
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    startTest();
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( new RegExp, "",   false, false, false, 0 );
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( /.*/,       ".*", false, false, false, 0 );
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( /[\d]{5}/g, "[\\d]{5}", true, false, false, 0 );
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( /[\S]?$/i,  "[\\S]?$", false, true, false, 0 );
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( /^([a-z]*)[^\w\s\f\n\r]+/m,  "^([a-z]*)[^\\w\\s\\f\\n\\r]+", false, false, true, 0 );
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( /[\D]{1,5}[\ -][\d]/gi,      "[\\D]{1,5}[\\ -][\\d]", true, true, false, 0 );
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( /[a-zA-Z0-9]*/gm, "[a-zA-Z0-9]*", true, false, true, 0 );
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( /x|y|z/gim, "x|y|z", true, true, true, 0 );
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( /\u0051/im, "\\u0051", false, true, true, 0 );
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( /\x45/gm, "\\x45", true, false, true, 0 );
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddRegExpCases( /\097/gi, "\\097", true, true, false, 0 );
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    test();
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction AddRegExpCases( re, s, g, i, m, l ) {
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".test == RegExp.prototype.test",
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 true,
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.test == RegExp.prototype.test );
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".toString == RegExp.prototype.toString",
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 true,
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.toString == RegExp.prototype.toString );
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".contructor == RegExp.prototype.constructor",
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 true,
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.constructor == RegExp.prototype.constructor );
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".compile == RegExp.prototype.compile",
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 true,
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.compile == RegExp.prototype.compile );
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".exec == RegExp.prototype.exec",
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 true,
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.exec == RegExp.prototype.exec );
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // properties
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".source",
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 s,
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.source );
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
59d0825bca7fe65beaee391d30da42e937db621564Steve Block/*
60d0825bca7fe65beaee391d30da42e937db621564Steve Block * http://bugzilla.mozilla.org/show_bug.cgi?id=225550 changed
61d0825bca7fe65beaee391d30da42e937db621564Steve Block * the behavior of toString() and toSource() on empty regexps.
62d0825bca7fe65beaee391d30da42e937db621564Steve Block * So branch if |s| is the empty string -
63d0825bca7fe65beaee391d30da42e937db621564Steve Block */
64d0825bca7fe65beaee391d30da42e937db621564Steve Block    var S = s? s : '(?:)';
65d0825bca7fe65beaee391d30da42e937db621564Steve Block
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".toString()",
67d0825bca7fe65beaee391d30da42e937db621564Steve Block                 "/" + S +"/" + (g?"g":"") + (i?"i":"") +(m?"m":""),
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.toString() );
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".global",
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 g,
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.global );
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".ignoreCase",
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 i,
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.ignoreCase );
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".multiline",
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 m,
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.multiline);
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AddTestCase( re + ".lastIndex",
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 l,
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 re.lastIndex  );
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
86