2006-08-21 Vladimir Olexa <vladimir.olexa@gmail.com>
authorap <ap@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 21 Aug 2006 17:43:55 +0000 (17:43 +0000)
committerap <ap@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 21 Aug 2006 17:43:55 +0000 (17:43 +0000)
        Reviewed by Darin.

        http://bugzilla.opendarwin.org/show_bug.cgi?id=6252
        JavaScript 1.6 Array.lastIndexOf

        Test: fast/js/array-lastIndexOf.html

        * kjs/array_object.cpp:
        (ArrayProtoFunc::callAsFunction): Added a LastIndexOf case.
        * kjs/array_object.h:
        (KJS::ArrayProtoFunc::): Added LastIndexOf to enum.
        * tests/mozilla/expected.html: Two more tests now pass.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15952 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/array_object.cpp
JavaScriptCore/kjs/array_object.h
JavaScriptCore/tests/mozilla/expected.html
LayoutTests/ChangeLog
LayoutTests/fast/js/array-lastIndexOf-expected.txt [new file with mode: 0644]
LayoutTests/fast/js/array-lastIndexOf.html [new file with mode: 0644]
LayoutTests/fast/js/resources/array-lastIndexOf.js [new file with mode: 0644]

index 3fd2c290491b13c5726c1fd65981b103d0b7043f..b98a89a3600d2a5f6ed84054e3b65ab66db1a69b 100644 (file)
@@ -1,3 +1,18 @@
+2006-08-21  Vladimir Olexa  <vladimir.olexa@gmail.com>
+
+        Reviewed by Darin.
+
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=6252
+        JavaScript 1.6 Array.lastIndexOf
+
+        Test: fast/js/array-lastIndexOf.html
+
+        * kjs/array_object.cpp:
+        (ArrayProtoFunc::callAsFunction): Added a LastIndexOf case.
+        * kjs/array_object.h:
+        (KJS::ArrayProtoFunc::): Added LastIndexOf to enum.
+        * tests/mozilla/expected.html: Two more tests now pass.
+
 2006-08-20  Nikolas Zimmermann  <zimmermann@kde.org>
 
         Reviewed by Maciej. Landed by rwlbuis.
index 7ae49ebc7f60459fd023e0ee30ea8917082b226a..158d9f14dc3a015d1c9bc63663a8eae2e8f486b3 100644 (file)
@@ -403,6 +403,7 @@ const ClassInfo ArrayPrototype::info = {"Array", &ArrayInstance::info, &arrayTab
   forEach        ArrayProtoFunc::ForEach        DontEnum|Function 1
   some           ArrayProtoFunc::Some           DontEnum|Function 1
   indexOf        ArrayProtoFunc::IndexOf        DontEnum|Function 1
+  lastIndexOf    ArrayProtoFunc::LastIndexOf    DontEnum|Function 1
   filter         ArrayProtoFunc::Filter         DontEnum|Function 1
   map            ArrayProtoFunc::Map            DontEnum|Function 1
 @end
@@ -891,7 +892,32 @@ JSValue *ArrayProtoFunc::callAsFunction(ExecState *exec, JSObject *thisObj, cons
 
     return jsNumber(-1);
   }
+  case LastIndexOf: {
+       // JavaScript 1.6 Extension by Mozilla
+      // Documentation: http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:lastIndexOf 
 
+    int index = length - 1;
+    double d = args[1]->toInteger(exec);
+
+    if (d < 0) {
+        d += length;
+        if (d < 0) 
+            return jsNumber(-1);
+    }
+    if (d < length)
+        index = static_cast<int>(d);
+          
+    JSValue* searchElement = args[0];
+    for (; index >= 0; --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;
index 9ca66b120a5a3adef4fb12ad9eccbf773e8e7eac..b59c43cc3e527c17682a984178c0558c44a74265 100644 (file)
@@ -44,7 +44,7 @@ namespace KJS {
 
     enum { ToString, ToLocaleString, Concat, Join, Pop, Push,
           Reverse, Shift, Slice, Sort, Splice, UnShift, 
-          Every, ForEach, Some, IndexOf, Filter, Map };
+          Every, ForEach, Some, IndexOf, Filter, Map, LastIndexOf };
   private:
     int id;
   };
index 7cdff7cb147e60525e8a458a6eb4358079f1b42d..4a33f6d4f53dacfd92fc984c8771de6b42a0c026 100644 (file)
@@ -7,11 +7,11 @@
 <p class='results_summary'>
 Test List: All tests<br>
 Skip List: (none)<br>
-1135 test(s) selected, 1127 test(s) completed, 74 failures reported (6.56% failed)<br>
-Engine command line: /Users/darin/symroots/Debug/testkjs <br>
-OS type: Darwin darin-adlers-power-mac-g4.local 8.7.0 Darwin Kernel Version 8.7.0: Fri May 26 15:20:53 PDT 2006; root:xnu-792.6.76.obj~1/RELEASE_PPC Power Macintosh powerpc<br>
-Testcase execution time: 8 minutes, 37 seconds.<br>
-Tests completed on Sat Jul 29 16:11:04 2006.<br><br>
+1135 test(s) selected, 1127 test(s) completed, 72 failures reported (6.38% failed)<br>
+Engine command line: /Users/vlado/WebKit/WebKitBuild/Debug/testkjs <br>
+OS type: Darwin XP-SCK.local 8.7.0 Darwin Kernel Version 8.7.0: Fri May 26 15:20:53 PDT 2006; root:xnu-792.6.76.obj~1/RELEASE_PPC Power Macintosh powerpc<br>
+Testcase execution time: 6 minutes, 19 seconds.<br>
+Tests completed on Fri Aug 18 14:32:03 2006.<br><br>
 [ <a href='#fail_detail'>Failure Details</a> | <a href='#retest_list'>Retest List</a> | <a href='menu.html'>Test Selection Page</a> ]<br>
 <hr>
 <a name='fail_detail'></a>
@@ -73,7 +73,7 @@ Complete testcase output was:<br>
 LEAK: 618 KJS::Node<br>
 --> RegExp/hex-001.js JS regexp anchoring on empty match bug<br>
 --> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=2157<br>
-[9352] ./ecma_2/RegExp/regress-001.js line 18: TypeError: Object /a||b/ (result of expression /a||b/) does not allow calls.<br>
+[29747] ./ecma_2/RegExp/regress-001.js line 18: TypeError: Object /a||b/ (result of expression /a||b/) does not allow calls.<br>
 </tt><br>
 <a name='failure6'></a><dd><b>Testcase <a target='other_window' href='./ecma_2/RegExp/unicode-001.js'>ecma_2/RegExp/unicode-001.js</a> failed</b> <br>
  [ <a href='#failure5'>Previous Failure</a> | <a href='#failure7'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -82,26 +82,26 @@ Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 671 KJS::Node<br>
 --> RegExp/unicode-001.js new RegExp( pattern, flags )<br>
-[9353] ./ecma_2/RegExp/unicode-001.js line 33: TypeError: Null value<br>
+[29748] ./ecma_2/RegExp/unicode-001.js line 33: TypeError: Null value<br>
 </tt><br>
 <a name='failure7'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Date/15.9.5.7.js'>ecma_3/Date/15.9.5.7.js</a> failed</b> <br>
  [ <a href='#failure6'>Previous Failure</a> | <a href='#failure8'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
 <tt><br>
 Failure messages were:<br>
---> (Wed Dec 31 1969 16:00:00 GMT-0800 (PST)).toLocaleTimeString() = 4:00:00 PM PST FAILED! expected: 16:00:00<br>
---> (Wed Dec 31 1969 08:00:00 GMT-0800 (PST)).toLocaleTimeString() = 8:00:00 AM PST FAILED! expected: 08:00:00<br>
---> (Sun Dec 31 1899 16:00:00 GMT-0800 (PST)).toLocaleTimeString() = 5:00:00 PM PDT FAILED! expected: 16:00:00<br>
---> (Mon Jan 01 1900 00:00:00 GMT-0800 (PST)).toLocaleTimeString() = 1:00:00 AM PDT FAILED! expected: 00:00:00<br>
---> (Fri Dec 31 1999 16:00:00 GMT-0800 (PST)).toLocaleTimeString() = 4:00:00 PM PST FAILED! expected: 16:00:00<br>
---> (Sat Jan 01 2000 00:00:00 GMT-0800 (PST)).toLocaleTimeString() = 12:00:00 AM PST FAILED! expected: 00:00:00<br>
---> (Mon Feb 28 2000 16:00:00 GMT-0800 (PST)).toLocaleTimeString() = 4:00:00 PM PST FAILED! expected: 16:00:00<br>
---> (Mon Feb 28 2000 15:59:59 GMT-0800 (PST)).toLocaleTimeString() = 3:59:59 PM PST FAILED! expected: 15:59:59<br>
---> (Tue Feb 29 2000 00:00:00 GMT-0800 (PST)).toLocaleTimeString() = 12:00:00 AM PST FAILED! expected: 00:00:00<br>
---> (Sat Jul 29 2006 16:09:33 GMT-0700 (PDT)).toLocaleTimeString() = 4:09:33 PM PDT FAILED! expected: 16:09:33<br>
---> (Sun Jul 30 2006 00:09:33 GMT-0700 (PDT)).toLocaleTimeString() = 12:09:33 AM PDT FAILED! expected: 00:09:33<br>
---> (Fri Dec 31 2004 16:00:00 GMT-0800 (PST)).toLocaleTimeString() = 4:00:00 PM PST FAILED! expected: 16:00:00<br>
---> (Fri Dec 31 2004 15:59:59 GMT-0800 (PST)).toLocaleTimeString() = 3:59:59 PM PST FAILED! expected: 15:59:59<br>
---> (Sat Jan 01 2005 00:00:00 GMT-0800 (PST)).toLocaleTimeString() = 12:00:00 AM PST FAILED! expected: 00:00:00<br>
+--> (Wed Dec 31 1969 19:00:00 GMT-0500 (EST)).toLocaleTimeString() = 7:00:00 PM EST FAILED! expected: 19:00:00<br>
+--> (Wed Dec 31 1969 14:00:00 GMT-0500 (EST)).toLocaleTimeString() = 2:00:00 PM EST FAILED! expected: 14:00:00<br>
+--> (Sun Dec 31 1899 19:00:00 GMT-0500 (EST)).toLocaleTimeString() = 8:00:00 PM EDT FAILED! expected: 19:00:00<br>
+--> (Mon Jan 01 1900 00:00:00 GMT-0500 (EST)).toLocaleTimeString() = 1:00:00 AM EDT FAILED! expected: 00:00:00<br>
+--> (Fri Dec 31 1999 19:00:00 GMT-0500 (EST)).toLocaleTimeString() = 7:00:00 PM EST FAILED! expected: 19:00:00<br>
+--> (Sat Jan 01 2000 00:00:00 GMT-0500 (EST)).toLocaleTimeString() = 12:00:00 AM EST FAILED! expected: 00:00:00<br>
+--> (Mon Feb 28 2000 19:00:00 GMT-0500 (EST)).toLocaleTimeString() = 7:00:00 PM EST FAILED! expected: 19:00:00<br>
+--> (Mon Feb 28 2000 18:59:59 GMT-0500 (EST)).toLocaleTimeString() = 6:59:59 PM EST FAILED! expected: 18:59:59<br>
+--> (Tue Feb 29 2000 00:00:00 GMT-0500 (EST)).toLocaleTimeString() = 12:00:00 AM EST FAILED! expected: 00:00:00<br>
+--> (Fri Aug 18 2006 14:30:51 GMT-0400 (EDT)).toLocaleTimeString() = 2:30:51 PM EDT FAILED! expected: 14:30:51<br>
+--> (Fri Aug 18 2006 19:30:51 GMT-0400 (EDT)).toLocaleTimeString() = 7:30:51 PM EDT FAILED! expected: 19:30:51<br>
+--> (Fri Dec 31 2004 19:00:00 GMT-0500 (EST)).toLocaleTimeString() = 7:00:00 PM EST FAILED! expected: 19:00:00<br>
+--> (Fri Dec 31 2004 18:59:59 GMT-0500 (EST)).toLocaleTimeString() = 6:59:59 PM EST FAILED! expected: 18:59:59<br>
+--> (Sat Jan 01 2005 00:00:00 GMT-0500 (EST)).toLocaleTimeString() = 12:00:00 AM EST FAILED! expected: 00:00:00<br>
 </tt><br>
 <a name='failure8'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/FunExpr/fe-001.js'>ecma_3/FunExpr/fe-001.js</a> failed</b> <br>
  [ <a href='#failure7'>Previous Failure</a> | <a href='#failure9'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -578,7 +578,7 @@ Failure messages were:<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 397 KJS::Node<br>
-[9509] ./ecma_3/Statements/regress-194364.js line 1: SyntaxError: Parse error<br>
+[29901] ./ecma_3/Statements/regress-194364.js line 1: SyntaxError: Parse error<br>
 </tt><br>
 <a name='failure20'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-002.js'>ecma_3/Unicode/uc-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23613' target='other_window'>Bug Number 23613</a><br>
  [ <a href='#failure19'>Previous Failure</a> | <a href='#failure21'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -595,7 +595,7 @@ Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 403 KJS::Node<br>
 --> JS1_2 Object.toString()<br>
-[9530] ./js1_2/Objects/toString-001.js line 103: TypeError: Object /^\{(.*)\}$/ (result of expression /^\{(.*)\}$/) does not allow calls.<br>
+[29922] ./js1_2/Objects/toString-001.js line 103: TypeError: Object /^\{(.*)\}$/ (result of expression /^\{(.*)\}$/) does not allow calls.<br>
 </tt><br>
 <a name='failure22'></a><dd><b>Testcase <a target='other_window' href='./js1_2/String/concat.js'>js1_2/String/concat.js</a> failed</b> <br>
  [ <a href='#failure21'>Previous Failure</a> | <a href='#failure23'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -645,7 +645,7 @@ Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 333 KJS::Node<br>
 --> JS_1.2 The variable statment<br>
-[9543] ./js1_2/function/regexparg-1.js line 80: TypeError: Object /abc/ (result of expression x) does not allow calls.<br>
+[29935] ./js1_2/function/regexparg-1.js line 80: TypeError: Object /abc/ (result of expression x) does not allow calls.<br>
 </tt><br>
 <a name='failure28'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-1.js'>js1_2/function/tostring-1.js</a> failed</b> <br>
  [ <a href='#failure27'>Previous Failure</a> | <a href='#failure29'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -719,7 +719,7 @@ Complete testcase output was:<br>
 LEAK: 329 KJS::Node<br>
 --> Executing script: compile.js<br>
 --> As described in Netscape doc "Whats new in JavaScript 1.2" RegExp: compile<br>
-[9570] ./js1_2/regexp/compile.js line 43: TypeError: Value undefined (result of expression regularExpression.compile) is not object.<br>
+[29962] ./js1_2/regexp/compile.js line 43: TypeError: Value undefined (result of expression regularExpression.compile) is not object.<br>
 </tt><br>
 <a name='failure36'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/endLine.js'>js1_2/regexp/endLine.js</a> failed</b> <br>
  [ <a href='#failure35'>Previous Failure</a> | <a href='#failure37'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -734,7 +734,7 @@ Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 329 KJS::Node<br>
 --> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=6359<br>
-[9586] ./js1_2/regexp/regress-6359.js line 56: TypeError: Object /(a*)b\1+/ (result of expression /(a*)b\1+/) does not allow calls.<br>
+[29978] ./js1_2/regexp/regress-6359.js line 56: TypeError: Object /(a*)b\1+/ (result of expression /(a*)b\1+/) does not allow calls.<br>
 </tt><br>
 <a name='failure38'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/regress-9141.js'>js1_2/regexp/regress-9141.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=http://bugzilla.mozilla.org/show_bug.cgi?id=9141' target='other_window'>Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=9141</a><br>
  [ <a href='#failure37'>Previous Failure</a> | <a href='#failure39'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -743,7 +743,7 @@ Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 329 KJS::Node<br>
 --> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=9141<br>
-[9587] ./js1_2/regexp/regress-9141.js line 73: TypeError: Object /(?:xx|x)*/ (result of expression /(?:xx|x)*/) does not allow calls.<br>
+[29979] ./js1_2/regexp/regress-9141.js line 73: TypeError: Object /(?:xx|x)*/ (result of expression /(?:xx|x)*/) does not allow calls.<br>
 </tt><br>
 <a name='failure39'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/simple_form.js'>js1_2/regexp/simple_form.js</a> failed</b> <br>
  [ <a href='#failure38'>Previous Failure</a> | <a href='#failure40'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -753,7 +753,7 @@ Complete testcase output was:<br>
 LEAK: 329 KJS::Node<br>
 --> Executing script: simple_form.js<br>
 --> As described in Netscape doc "Whats new in JavaScript 1.2" RegExp: simple form<br>
-[9588] ./js1_2/regexp/simple_form.js line 43: TypeError: Object /[0-9]{3}/ (result of expression /[0-9]{3}/) does not allow calls.<br>
+[29980] ./js1_2/regexp/simple_form.js line 43: TypeError: Object /[0-9]{3}/ (result of expression /[0-9]{3}/) does not allow calls.<br>
 </tt><br>
 <a name='failure40'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/special_characters.js'>js1_2/regexp/special_characters.js</a> failed</b> <br>
  [ <a href='#failure39'>Previous Failure</a> | <a href='#failure41'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -802,7 +802,7 @@ Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 389 KJS::Node<br>
 --> script-001 NativeScript<br>
-[9614] ./js1_3/Script/script-001.js line 133: ReferenceError: Can't find variable: Script<br>
+[106] ./js1_3/Script/script-001.js line 133: ReferenceError: Can't find variable: Script<br>
 </tt><br>
 <a name='failure46'></a><dd><b>Testcase <a target='other_window' href='./js1_3/regress/function-001-n.js'>js1_3/regress/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
  [ <a href='#failure45'>Previous Failure</a> | <a href='#failure47'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -842,7 +842,7 @@ LEAK: 323 KJS::Node<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 473 KJS::Node<br>
-[9659] ./js1_5/Exceptions/errstack-001.js line 247: TypeError: Undefined value<br>
+[155] ./js1_5/Exceptions/errstack-001.js line 247: TypeError: Undefined value<br>
 </tt><br>
 <a name='failure51'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-50447.js'>js1_5/Exceptions/regress-50447.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=50447' target='other_window'>Bug Number 50447</a><br>
  [ <a href='#failure50'>Previous Failure</a> | <a href='#failure52'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -852,7 +852,7 @@ Complete testcase output was:<br>
 LEAK: 654 KJS::Node<br>
 --> BUGNUMBER: 50447<br>
 --> STATUS: Test (non-ECMA) Error object properties fileName, lineNumber<br>
-[9660] ./js1_5/Exceptions/regress-50447.js line 65: TypeError: Undefined value<br>
+[156] ./js1_5/Exceptions/regress-50447.js line 65: TypeError: Undefined value<br>
 </tt><br>
 <a name='failure52'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-001.js'>js1_5/GetSet/getset-001.js</a> failed</b> <br>
  [ <a href='#failure51'>Previous Failure</a> | <a href='#failure53'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -881,7 +881,7 @@ LEAK: 323 KJS::Node<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 765 KJS::Node<br>
-[9675] ./js1_5/Object/regress-90596-001.js line 48: TypeError: Value undefined (result of expression obj.toSource) is not object.<br>
+[175] ./js1_5/Object/regress-90596-001.js line 48: TypeError: Value undefined (result of expression obj.toSource) is not object.<br>
 </tt><br>
 <a name='failure56'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-002.js'>js1_5/Object/regress-90596-002.js</a> failed</b> <br>
  [ <a href='#failure55'>Previous Failure</a> | <a href='#failure57'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -889,7 +889,7 @@ LEAK: 765 KJS::Node<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 769 KJS::Node<br>
-[9676] ./js1_5/Object/regress-90596-002.js line 48: ReferenceError: Can't find variable: uneval<br>
+[176] ./js1_5/Object/regress-90596-002.js line 48: ReferenceError: Can't find variable: uneval<br>
 </tt><br>
 <a name='failure57'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-001.js'>js1_5/Object/regress-96284-001.js</a> failed</b> <br>
  [ <a href='#failure56'>Previous Failure</a> | <a href='#failure58'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -897,7 +897,7 @@ LEAK: 769 KJS::Node<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 397 KJS::Node<br>
-[9678] ./js1_5/Object/regress-96284-001.js line 49: TypeError: Value undefined (result of expression obj1.toSource) is not object.<br>
+[179] ./js1_5/Object/regress-96284-001.js line 49: TypeError: Value undefined (result of expression obj1.toSource) is not object.<br>
 </tt><br>
 <a name='failure58'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-002.js'>js1_5/Object/regress-96284-002.js</a> failed</b> <br>
  [ <a href='#failure57'>Previous Failure</a> | <a href='#failure59'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -905,7 +905,7 @@ LEAK: 397 KJS::Node<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 397 KJS::Node<br>
-[9679] ./js1_5/Object/regress-96284-002.js line 49: ReferenceError: Can't find variable: uneval<br>
+[180] ./js1_5/Object/regress-96284-002.js line 49: ReferenceError: Can't find variable: uneval<br>
 </tt><br>
 <a name='failure59'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-44009.js'>js1_5/Regress/regress-44009.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=44009' target='other_window'>Bug Number 44009</a><br>
  [ <a href='#failure58'>Previous Failure</a> | <a href='#failure60'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -915,7 +915,7 @@ Complete testcase output was:<br>
 LEAK: 396 KJS::Node<br>
 --> BUGNUMBER: 44009<br>
 --> STATUS: Testing that we don't crash on obj.toSource()<br>
-[9684] ./js1_5/Regress/regress-44009.js line 60: TypeError: Value undefined (result of expression obj.toSource) is not object.<br>
+[185] ./js1_5/Regress/regress-44009.js line 60: TypeError: Value undefined (result of expression obj.toSource) is not object.<br>
 </tt><br>
 <a name='failure60'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-68498-003.js'>js1_5/Regress/regress-68498-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=68498' target='other_window'>Bug Number 68498</a><br>
  [ <a href='#failure59'>Previous Failure</a> | <a href='#failure61'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -950,7 +950,7 @@ LEAK: 323 KJS::Node<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 419 KJS::Node<br>
-[9711] ./js1_5/Regress/regress-127557.js line 75: ReferenceError: Can't find variable: clone<br>
+[214] ./js1_5/Regress/regress-127557.js line 75: ReferenceError: Can't find variable: clone<br>
 </tt><br>
 <a name='failure64'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-172699.js'>js1_5/Regress/regress-172699.js</a> failed</b> <br>
  [ <a href='#failure63'>Previous Failure</a> | <a href='#failure65'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -958,7 +958,7 @@ LEAK: 419 KJS::Node<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 397 KJS::Node<br>
-[9720] ./js1_5/Regress/regress-172699.js line 61: URIError: URI error<br>
+[228] ./js1_5/Regress/regress-172699.js line 61: URIError: URI error<br>
 </tt><br>
 <a name='failure65'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-179524.js'>js1_5/Regress/regress-179524.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=179524' target='other_window'>Bug Number 179524</a><br>
  [ <a href='#failure64'>Previous Failure</a> | <a href='#failure66'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -1033,7 +1033,7 @@ Failure messages were:<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 397 KJS::Node<br>
-[9745] ./js1_5/Scope/regress-220584.js line 56: ReferenceError: Can't find variable: Script<br>
+[257] ./js1_5/Scope/regress-220584.js line 56: ReferenceError: Can't find variable: Script<br>
 </tt><br>
 <a name='failure68'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/scope-001.js'>js1_5/Scope/scope-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=53268' target='other_window'>Bug Number 53268</a><br>
  [ <a href='#failure67'>Previous Failure</a> | <a href='#failure69'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -1047,27 +1047,8 @@ Failure messages were:<br>
 --> FAILED!: [reported from test()] Expected value 'undefined', Actual value '1'<br>
 --> FAILED!: [reported from test()] <br>
 </tt><br>
-<a name='failure69'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Array/regress-304828.js'>js1_6/Array/regress-304828.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=304828' target='other_window'>Bug Number 304828</a><br>
+<a name='failure69'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-301574.js'>js1_6/Regress/regress-301574.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=301574' target='other_window'>Bug Number 301574</a><br>
  [ <a href='#failure68'>Previous Failure</a> | <a href='#failure70'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
-<tt>--> STATUS: Array Generic Methods<br>
-Failure messages were:<br>
---> FAILED!: Array Generic Methods: lastIndexOf<br>
---> FAILED!: Type mismatch, expected type number, actual type string<br>
---> FAILED!: Expected value '4', Actual value 'TypeError: Undefined value'<br>
---> FAILED!: <br>
-</tt><br>
-<a name='failure70'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Array/regress-310425-01.js'>js1_6/Array/regress-310425-01.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=310425' target='other_window'>Bug Number 310425</a><br>
- [ <a href='#failure69'>Previous Failure</a> | <a href='#failure71'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
-<tt>Expected exit code 0, got 3<br>
-Testcase terminated with signal 0<br>
-Complete testcase output was:<br>
-LEAK: 1212 KJS::Node<br>
---> BUGNUMBER: 310425<br>
---> STATUS: Array.indexOf/lastIndexOf edge cases<br>
-[9756] ./js1_6/Array/regress-310425-01.js line 47: TypeError: Value undefined (result of expression [].lastIndexOf) is not object.<br>
-</tt><br>
-<a name='failure71'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-301574.js'>js1_6/Regress/regress-301574.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=301574' target='other_window'>Bug Number 301574</a><br>
- [ <a href='#failure70'>Previous Failure</a> | <a href='#failure72'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
 <tt>--> STATUS: E4X should be enabled even when e4x=1 not specified<br>
 Failure messages were:<br>
 --> FAILED!: E4X should be enabled even when e4x=1 not specified: XML()<br>
@@ -1077,22 +1058,22 @@ Failure messages were:<br>
 --> FAILED!: Expected value 'No error', Actual value 'error: ReferenceError: Can't find variable: XML'<br>
 --> FAILED!: <br>
 </tt><br>
-<a name='failure72'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-309242.js'>js1_6/Regress/regress-309242.js</a> failed</b> <br>
- [ <a href='#failure71'>Previous Failure</a> | <a href='#failure73'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure70'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-309242.js'>js1_6/Regress/regress-309242.js</a> failed</b> <br>
+ [ <a href='#failure69'>Previous Failure</a> | <a href='#failure71'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
 <tt>Expected exit code 0, got 3<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 1212 KJS::Node<br>
 </tt><br>
-<a name='failure73'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-314887.js'>js1_6/Regress/regress-314887.js</a> failed</b> <br>
- [ <a href='#failure72'>Previous Failure</a> | <a href='#failure74'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure71'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-314887.js'>js1_6/Regress/regress-314887.js</a> failed</b> <br>
+ [ <a href='#failure70'>Previous Failure</a> | <a href='#failure72'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
 <tt>Expected exit code 0, got 3<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
 LEAK: 1212 KJS::Node<br>
 </tt><br>
-<a name='failure74'></a><dd><b>Testcase <a target='other_window' href='./js1_6/String/regress-306591.js'>js1_6/String/regress-306591.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=306591' target='other_window'>Bug Number 306591</a><br>
- [ <a href='#failure73'>Previous Failure</a> | <a href='#failure75'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure72'></a><dd><b>Testcase <a target='other_window' href='./js1_6/String/regress-306591.js'>js1_6/String/regress-306591.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=306591' target='other_window'>Bug Number 306591</a><br>
+ [ <a href='#failure71'>Previous Failure</a> | <a href='#failure73'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
 <tt>Expected exit code 0, got 3<br>
 Testcase terminated with signal 0<br>
 Complete testcase output was:<br>
@@ -1100,7 +1081,7 @@ LEAK: 1212 KJS::Node<br>
 --> BUGNUMBER: 306591<br>
 --> STATUS: String static methods<br>
 --> STATUS: See https://bugzilla.mozilla.org/show_bug.cgi?id=304828<br>
-[9767] ./js1_6/String/regress-306591.js line 48: TypeError: Value undefined (result of expression String.split) is not object.<br>
+[280] ./js1_6/String/regress-306591.js line 48: TypeError: Value undefined (result of expression String.split) is not object.<br>
 </tt><br>
 </dl>
 [ <a href='#tippy_top'>Top of Page</a> | <a href='#fail_detail'>Top of Failures</a> ]<br>
@@ -1108,9 +1089,9 @@ LEAK: 1212 KJS::Node<br>
 <pre>
 <a name='retest_list'></a>
 <h2>Retest List</h2><br>
-# Retest List, kjs, generated Sat Jul 29 16:11:04 2006.
+# Retest List, kjs, generated Fri Aug 18 14:32:03 2006.
 # Original test base was: All tests.
-# 1127 of 1135 test(s) were completed, 74 failures reported.
+# 1127 of 1135 test(s) were completed, 72 failures reported.
 ecma/GlobalObject/15.1.2.2-2.js
 ecma/LexicalConventions/7.7.3-1.js
 ecma/TypeConversion/9.3.1-3.js
@@ -1179,8 +1160,6 @@ js1_5/Regress/regress-179524.js
 js1_5/Scope/regress-185485.js
 js1_5/Scope/regress-220584.js
 js1_5/Scope/scope-001.js
-js1_6/Array/regress-304828.js
-js1_6/Array/regress-310425-01.js
 js1_6/Regress/regress-301574.js
 js1_6/Regress/regress-309242.js
 js1_6/Regress/regress-314887.js
index 6f29d248916a510cfd22e4bcb563a0928ba0e8df..25bbf9dac50d0e5acee0f98c5b7802d1b2d9b298 100644 (file)
@@ -1,3 +1,14 @@
+2006-08-21  Vladimir Olexa  <vladimir.olexa@gmail.com>
+
+        Reviewed by Darin.
+
+        Test for http://bugzilla.opendarwin.org/show_bug.cgi?id=6252
+        JavaScript 1.6 Array.lastIndexOf
+
+        * fast/js/array-lastIndexOf-expected.txt: Added.
+        * fast/js/array-lastIndexOf.html: Added.
+        * fast/js/resources/array-lastIndexOf.js: Added.
+
 2006-08-21  Alexey Proskuryakov  <ap@nypop.com>
 
         Reviewed by Eric.
diff --git a/LayoutTests/fast/js/array-lastIndexOf-expected.txt b/LayoutTests/fast/js/array-lastIndexOf-expected.txt
new file mode 100644 (file)
index 0000000..1d3dbb5
--- /dev/null
@@ -0,0 +1,17 @@
+This test checks lastIndexOf for various values in an array
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS lastIndex is -1
+PASS lastIndex is 2
+PASS lastIndex is 3
+PASS lastIndex is -1
+PASS lastIndex is 3
+PASS lastIndex is 0
+PASS lastIndex is 0
+PASS lastIndex is 3
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/array-lastIndexOf.html b/LayoutTests/fast/js/array-lastIndexOf.html
new file mode 100644 (file)
index 0000000..61cfab5
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="resources/js-test-style.css">
+<script src="resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="resources/array-lastIndexOf.js"></script>
+<script src="resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/resources/array-lastIndexOf.js b/LayoutTests/fast/js/resources/array-lastIndexOf.js
new file mode 100644 (file)
index 0000000..e68fa50
--- /dev/null
@@ -0,0 +1,26 @@
+description(
+'This test checks lastIndexOf for various values in an array'
+);
+
+
+var testArray = [2, 5, 9, 2];
+var lastIndex = 0;
+
+lastIndex = testArray.lastIndexOf(2,-500);
+shouldBe('lastIndex', '-1');
+lastIndex = testArray.lastIndexOf(9,500);
+shouldBe('lastIndex', '2');
+lastIndex = testArray.lastIndexOf(2);
+shouldBe('lastIndex', '3');
+lastIndex = testArray.lastIndexOf(7);
+shouldBe('lastIndex', '-1');
+lastIndex = testArray.lastIndexOf(2, 3);
+shouldBe('lastIndex', '3');
+lastIndex = testArray.lastIndexOf(2, 2);
+shouldBe('lastIndex', '0');
+lastIndex = testArray.lastIndexOf(2, -2);
+shouldBe('lastIndex', '0');
+lastIndex = testArray.lastIndexOf(2, -1);
+shouldBe('lastIndex', '3');
+
+var successfullyParsed = true;