[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