]>
git.saurik.com Git - apple/javascriptcore.git/blob - tests/mozilla/ecma_2/RegExp/regexp-enumerate-001.js
   2     File Name:          regexp-enumerate-001.js 
   4     Description:        Regression Test. 
   6     If instance Native Object have properties that are enumerable, 
   7     JavaScript enumerated through the properties twice. This only 
   8     happened if objects had been instantiated, but their properties 
   9     had not been enumerated.  ie, the object inherited properties 
  10     from its prototype that are enumerated. 
  12     In the core JavaScript, this is only a problem with RegExp 
  13     objects, since the inherited properties of most core JavaScript 
  14     objects are not enumerated. 
  16     Author:             christine@netscape.com, pschwartau@netscape.com 
  17     Date:               12 November 1997 
  18     Modified:           14 July 2002 
  19     Reason:             See http://bugzilla.mozilla.org/show_bug.cgi?id=155291 
  20                         ECMA-262 Ed.3  Sections 15.10.7.1 through 15.10.7.5 
  21                         RegExp properties should be DontEnum 
  26     var SECTION 
= "regexp-enumerate-001"; 
  27     var VERSION 
= "ECMA_2"; 
  28     var TITLE   
= "Regression Test for Enumerating Properties"; 
  30     var BUGNUMBER
="339403"; 
  33     writeHeaderToLog( SECTION 
+ " "+ TITLE
); 
  36     var testcases 
= new Array(); 
  39      *  This test expects RegExp instances to have four enumerated properties: 
  40      *  source, global, ignoreCase, and lastIndex 
  42      *  99.01.25:  now they also have a multiLine instance property. 
  51     var t 
= new TestRegExp(); 
  53     for ( p 
in r 
) { e
[e
.length
] = { property:p
, value:r
[p
] }; t
.addProperty( p
, r
[p
]) }; 
  55     testcases
[testcases
.length
] = new TestCase( SECTION
, 
  56         "r = new RegExp(); e = new Array(); "+ 
  57         "for ( p in r ) { e[e.length] = { property:p, value:r[p] }; e.length", 
  63 function TestRegExp() { 
  64     this.addProperty 
= addProperty
; 
  66 function addProperty(name
, value
) { 
  69        if ( eval("this."+name
) != void 0 ) { 
  72             eval( "this."+ name
+" = "+ false ); 
  75        testcases
[testcases
.length
] = new TestCase( SECTION
, 
  76             "Property: " + name 
+" already enumerated?", 
  80         if ( testcases
[ testcases
.length
-1].passed 
== false ) { 
  81             testcases
[testcases
.length
-1].reason 
= "property already enumerated"; 
  87     for ( tc
=0; tc 
< testcases
.length
; tc
++ ) { 
  88         testcases
[tc
].passed 
= writeTestCaseResult( 
  91                             testcases
[tc
].description 
+" = "+ 
  92                             testcases
[tc
].actual 
); 
  94         testcases
[tc
].reason 
+= ( testcases
[tc
].passed 
) ? "" : "wrong value ";