[webkit-changes] cvs commit: LayoutTests/fast/js array-indexof-expected.txt array-indexof.html

Darin darin at opensource.apple.com
Sun Dec 18 16:27:30 PST 2005


darin       05/12/18 16:27:30

  Modified:    .        ChangeLog
               kjs      array_object.cpp array_object.h
               .        ChangeLog
  Added:       fast/js  array-indexof-expected.txt array-indexof.html
  Log:
  JavaScriptCore:
  
          Reviewed, tweaked, and landed by Darin.
  
          - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=5227
            Array indexOf() extension for JavaScript 1.5 Core
  
          * kjs/array_object.h:
          * kjs/array_object.cpp: (ArrayProtoFunc::callAsFunction): Added implementation of indexOf.
  
  LayoutTests:
  
          Reviewed, tweaked, and landed by Darin.
  
          - test for http://bugzilla.opendarwin.org/show_bug.cgi?id=5227
            Array indexOf() extension for JavaScript 1.5 Core
  
          * fast/js/array-indexof-expected.txt: Added.
          * fast/js/array-indexof.html: Added.
  
  Revision  Changes    Path
  1.910     +10 -0     JavaScriptCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/ChangeLog,v
  retrieving revision 1.909
  retrieving revision 1.910
  diff -u -r1.909 -r1.910
  --- ChangeLog	18 Dec 2005 13:26:58 -0000	1.909
  +++ ChangeLog	19 Dec 2005 00:27:26 -0000	1.910
  @@ -1,3 +1,13 @@
  +2005-12-18  Justin Haygood  <justin at xiondigital.net>
  +
  +        Reviewed, tweaked, and landed by Darin.
  +
  +        - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=5227
  +          Array indexOf() extension for JavaScript 1.5 Core
  +
  +        * kjs/array_object.h:
  +        * kjs/array_object.cpp: (ArrayProtoFunc::callAsFunction): Added implementation of indexOf.
  +
   2005-12-18  Anders Carlsson  <andersca at mac.com>
   
           Reviewed by Darin and Geoffrey.
  
  
  
  1.59      +29 -1     JavaScriptCore/kjs/array_object.cpp
  
  Index: array_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/array_object.cpp,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- array_object.cpp	13 Dec 2005 21:24:50 -0000	1.58
  +++ array_object.cpp	19 Dec 2005 00:27:28 -0000	1.59
  @@ -392,6 +392,7 @@
     every          ArrayProtoFunc::Every          DontEnum|Function 5
     forEach        ArrayProtoFunc::ForEach        DontEnum|Function 5
     some           ArrayProtoFunc::Some           DontEnum|Function 5
  +  indexOf        ArrayProtoFunc::IndexOf       DontEnum|Function 1
   @end
   */
   
  @@ -810,7 +811,34 @@
       }
       break;
     }
  -    
  +
  +  case IndexOf: {
  +    // JavaScript 1.5 Extension by Mozilla
  +    // Documentation: http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:indexOf
  +
  +    unsigned index = 0;
  +    double d = args[1]->toInteger(exec);
  +    if (d < 0)
  +        d += length;
  +    if (d > 0) {
  +        if (d > length)
  +            index = length;
  +        else
  +            index = static_cast<unsigned>(d);
  +    }
  +
  +    JSValue* searchElement = args[0];
  +    for (; index < length; ++index) {
  +        JSValue* e = getProperty(exec, thisObj, index);
  +        if (!e)
  +            e = jsUndefined();
  +        if (strictEqual(exec, searchElement, e))
  +            return jsNumber(index);
  +    }
  +
  +    return jsNumber(-1);
  +  }
  +
     default:
       assert(0);
       result = 0;
  
  
  
  1.18      +1 -1      JavaScriptCore/kjs/array_object.h
  
  Index: array_object.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/array_object.h,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- array_object.h	11 Dec 2005 02:05:41 -0000	1.17
  +++ array_object.h	19 Dec 2005 00:27:28 -0000	1.18
  @@ -45,7 +45,7 @@
   
       enum { ToString, ToLocaleString, Concat, Join, Pop, Push,
             Reverse, Shift, Slice, Sort, Splice, UnShift, 
  -          Every, ForEach, Some };
  +          Every, ForEach, Some, IndexOf };
     private:
       int id;
     };
  
  
  
  1.169     +10 -0     LayoutTests/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/LayoutTests/ChangeLog,v
  retrieving revision 1.168
  retrieving revision 1.169
  diff -u -r1.168 -r1.169
  --- ChangeLog	18 Dec 2005 22:55:34 -0000	1.168
  +++ ChangeLog	19 Dec 2005 00:27:28 -0000	1.169
  @@ -1,3 +1,13 @@
  +2005-12-18  Justin Haygood  <justin at xiondigital.net>
  +
  +        Reviewed, tweaked, and landed by Darin.
  +
  +        - test for http://bugzilla.opendarwin.org/show_bug.cgi?id=5227
  +          Array indexOf() extension for JavaScript 1.5 Core
  +
  +        * fast/js/array-indexof-expected.txt: Added.
  +        * fast/js/array-indexof.html: Added.
  +
   2005-12-18  Mitz Pettel  <opendarwin.org at mitzpettel.com>
   
           Reviewed by Hyatt, landed by Darin.
  
  
  
  1.1                  LayoutTests/fast/js/array-indexof-expected.txt
  
  Index: array-indexof-expected.txt
  ===================================================================
  1.0 Direct Testing, no starting at Parameter
  * The indexOf String "Hello" is 0
  * The indexOf String "Hi" is 1
  * The indexOf Boolean 'true' is 2
  * The indexOf Number '5' is 3
  * The indexOf Number '9' is 5
  
  2.0 A firstIndex parameter of 1 (positive offset test)
  * The indexOf String "Hi" is 1
  * The indexOf Boolean 'true' is 2
  * The indexOf Number 5 is 3
  * The indexOf Number 9 is 5
  
  3.0 A firstIndex parameter of -4 (negative offset test)
  * The indexOf String "Hi" is -1
  * The indexOf Boolean 'true' is -1
  * The indexOf Number 5 is 4
  * The indexOf Number 9 is 5
  
  4.0 A big positive firstIndex of 1000, to test the firstIndex > length
  * The indexOf Number '9' is -1
  
  5.0 A big positive firstIndex of 4294967301, to test when firstIndex > width of int (32-bits)
  * The indexOf Boolean 'true' is -1
  
  6.0 No arguments
  * No arguments passed: 7
  * No arguments passed: -1
  
  7.0 Looking for null
  * The indexOf null is 6
  * The indexOf null is -1
  
  8.0 Extra arguments
  * The indexOf String "Hello" is 0
  
  9.0 NaN firstIndex
  * The indexOf String "Hi" is 0
  
  10.0 Small firstIndex
  * The indexOf Boolean 'true' is 2
  
  11.0 Negative firstIndex bigger than the length of the array
  * The indexOf Boolean 'true' is 2
  
  12.0 Negative firstIndex bigger than 32-bits
  * The indexOf Boolean 'true' is 2
  
  13.0 Looking for undefined
  * The indexOf undefined is 7
  * The indexOf undefined is -1
  
  14.0 Object using the Array prototype
  * The indexOf String "Hello" is 0
  * The indexOf String "Hi" is 1
  * The indexOf Boolean 'true' is 2
  * The indexOf Number '5' is 3
  * The indexOf Number '9' is 5
  
  
  
  
  
  1.1                  LayoutTests/fast/js/array-indexof.html
  
  Index: array-indexof.html
  ===================================================================
  <html>
  <head>
  <script type="text/javascript">
  <!--
  
  var testArray = new Array("Hello", "Hi", true, 5, 5, 9, null, undefined);
  var testArray2 = new Array("Hello", "Hi", true, 5, 5, 9);
  var testArray3 = new Object;
  testArray3.__proto__ = testArray2.__proto__;
  testArray3[0] = "Hello";
  testArray3[1] = "Hi";
  testArray3[2] = true;
  testArray3[3] = 5;
  testArray3[4] = 5;
  testArray3[5] = 9;
  testArray3.length = 6;
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  // -->
  </script>
  </head>
  <body>
  
  <p>1.0 Direct Testing, no starting at Parameter<br>
  	* The indexOf String "Hello" is <script>document.write(testArray.indexOf("Hello"))</script><br>
  	* The indexOf String "Hi" is <script>document.write(testArray.indexOf("Hi"))</script><br>
  	* The indexOf Boolean 'true' is <script>document.write(testArray.indexOf( true ))</script><br>
  	* The indexOf Number '5' is <script>document.write(testArray.indexOf( 5 ))</script><br>
  	* The indexOf Number '9' is <script>document.write(testArray.indexOf( 9 ))</script>
  </p>
  
  <p>2.0 A firstIndex parameter of 1 (positive offset test)<br>
  	* The indexOf String "Hi" is <script>document.write(testArray.indexOf("Hi",1))</script><br>
  	* The indexOf Boolean 'true' is <script>document.write(testArray.indexOf(true,1))</script><br>
  	* The indexOf Number 5 is <script>document.write(testArray.indexOf(5,1))</script><br>
  	* The indexOf Number 9 is <script>document.write(testArray.indexOf(9,1))</script>
  </p>
  
  <p>3.0 A firstIndex parameter of -4 (negative offset test)<br>
  	* The indexOf String "Hi" is <script>document.write(testArray.indexOf("Hi",-4))</script><br>
  	* The indexOf Boolean 'true' is <script>document.write(testArray.indexOf(true,-4))</script><br>
  	* The indexOf Number 5 is <script>document.write(testArray.indexOf(5,-4))</script><br>
  	* The indexOf Number 9 is <script>document.write(testArray.indexOf(9,-4))</script>
  </p>
  
  <p>4.0 A big positive firstIndex of 1000, to test the firstIndex > length<br>
  	* The indexOf Number '9' is <script>document.write(testArray.indexOf(9,1000))</script>
  </p>
  
  <p>5.0 A big positive firstIndex of 4294967301, to test when firstIndex > width of int (32-bits)<br>
  	* The indexOf Boolean 'true' is <script>document.write(testArray.indexOf(true, 4294967301))</script>
  </p>
  
  <p>6.0 No arguments<br>
  	* No arguments passed: <script>document.write(testArray.indexOf())</script><br>
  	* No arguments passed: <script>document.write(testArray2.indexOf())</script>
  </p>
  
  <p>7.0 Looking for null<br>
  	* The indexOf null is <script>document.write(testArray.indexOf(null))</script><br>
  	* The indexOf null is <script>document.write(testArray2.indexOf(null))</script>
  </p>
  
  <p>8.0 Extra arguments<br>
  	* The indexOf String "Hello" is <script>document.write(testArray.indexOf("Hello", 0, true))</script>
  </p>
  
  <p>9.0 NaN firstIndex<br>
  	* The indexOf String "Hi" is <script>document.write(testArray.indexOf("Hello", "Hey"))</script>
  </p>
  
  <p>10.0 Small firstIndex<br>
  	* The indexOf Boolean 'true' is <script>document.write(testArray.indexOf(true, 0.45))</script>
  </p>
  
  <p>11.0 Negative firstIndex bigger than the length of the array<br>
  	* The indexOf Boolean 'true' is <script>document.write(testArray.indexOf(true, -1000))</script>
  </p>
  
  <p>12.0 Negative firstIndex bigger than 32-bits<br>
  	* The indexOf Boolean 'true' is <script>document.write(testArray.indexOf(true, -5294967301))</script>
  </p>
  
  <p>13.0 Looking for undefined<br>
  	* The indexOf undefined is <script>document.write(testArray.indexOf(undefined))</script><br>
  	* The indexOf undefined is <script>document.write(testArray2.indexOf(undefined))</script>
  </p>
  
  <p>14.0 Object using the Array prototype<br>
  	* The indexOf String "Hello" is <script>document.write(testArray3.indexOf("Hello"))</script><br>
  	* The indexOf String "Hi" is <script>document.write(testArray3.indexOf("Hi"))</script><br>
  	* The indexOf Boolean 'true' is <script>document.write(testArray3.indexOf(true))</script><br>
  	* The indexOf Number '5' is <script>document.write(testArray3.indexOf(5))</script><br>
  	* The indexOf Number '9' is <script>document.write(testArray3.indexOf(9))</script>
  </p>
  
  </body>
  </html>
  
  
  



More information about the webkit-changes mailing list