JavaScriptCore:
authorweinig <weinig@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 26 May 2007 21:57:28 +0000 (21:57 +0000)
committerweinig <weinig@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 26 May 2007 21:57:28 +0000 (21:57 +0000)
        Reviewed by Darin.

        Patch for http://bugs.webkit.org/show_bug.cgi?id=13854
        Port of commit 667785 from kjs

        - special case calling String.localeCompare() with no parameters to return 0.

        * kjs/string_object.cpp:
        (KJS::StringProtoFunc::callAsFunction):

LayoutTests:

        Reviewed by Darin.

        Update tests http://bugs.webkit.org/show_bug.cgi?id=13854
        Port of commit 667785 from kjs

        - update tests and results to match kde.

        * fast/js/kde/StringObject-expected.txt:
        * fast/js/kde/resources/StringObject.js:

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

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/string_object.cpp
LayoutTests/ChangeLog
LayoutTests/fast/js/kde/StringObject-expected.txt
LayoutTests/fast/js/kde/resources/StringObject.js

index e623e62..836be5b 100644 (file)
@@ -1,3 +1,15 @@
+2007-05-26  Sam Weinig  <sam@webkit.org>
+
+        Reviewed by Darin.
+
+        Patch for http://bugs.webkit.org/show_bug.cgi?id=13854
+        Port of commit 667785 from kjs
+
+        - special case calling String.localeCompare() with no parameters to return 0.
+
+        * kjs/string_object.cpp:
+        (KJS::StringProtoFunc::callAsFunction):
+
 2007-05-25  Kimmo Kinnunen  <kimmok@iki.fi>
 
         Reviewed by Darin.
index 5c110a9..b7c493f 100644 (file)
@@ -713,6 +713,8 @@ JSValue* StringProtoFunc::callAsFunction(ExecState* exec, JSObject* thisObj, con
     break;
   }
   case LocaleCompare:
+    if (args.size() < 1)
+      return jsNumber(0);
     return jsNumber(localeCompare(s, a0->toString(exec)));
 #ifndef KJS_PURE_ECMA
   case Big:
index 2aaaf38..233178d 100644 (file)
@@ -1,3 +1,15 @@
+2007-05-26  Sam Weinig  <sam@webkit.org>
+
+        Reviewed by Darin.
+
+        Update tests http://bugs.webkit.org/show_bug.cgi?id=13854
+        Port of commit 667785 from kjs
+
+        - update tests and results to match kde.
+
+        * fast/js/kde/StringObject-expected.txt:
+        * fast/js/kde/resources/StringObject.js:
+
 2007-05-26  Alexey Proskuryakov  <ap@webkit.org>
 
         Reviewed by Darin.
index 2121593..8eb78b5 100644 (file)
@@ -68,8 +68,19 @@ PASS 'abcdef'.slice(2, 5) is 'cde'
 PASS 'abcdefghijklmnopqrstuvwxyz1234567890'.slice(-32, -6) is 'efghijklmnopqrstuvwxyz1234'
 PASS 'abC1'.toUpperCase() is 'ABC1'
 PASS 'AbC2'.toLowerCase() is 'abc2'
+PASS 'a'.localeCompare('a') is 0
+PASS 'a'.localeCompare('aa') < 0 is true
+PASS 'a'.localeCompare('x') < 0 is true
+PASS 'x'.localeCompare('a') > 0 is true
+PASS ''.localeCompare('') is 0
+PASS ''.localeCompare() is 0
+PASS ''.localeCompare(undefined) is -1
+PASS ''.localeCompare(null) is -1
+PASS 'a'.localeCompare('') is 1
+PASS 'a'.localeCompare() is 0
 PASS 'abc'[0] is 'a'
 PASS 'abc'[-1] is undefined.
+PASS 'abc'[-4] is undefined.
 PASS 'abc'[10] is undefined.
 PASS 'abc'[10] is 'x'
 PASS bar is html
index 59c7bb6..c1bcc0f 100644 (file)
@@ -91,14 +91,28 @@ shouldBe("'axxb'.split(/x*/) + ''", "'a,b'");  // NS 4.7 is wrong here
 // String.prototype.slice()
 shouldBe("'abcdef'.slice(2, 5)", "'cde'");
 shouldBe("'abcdefghijklmnopqrstuvwxyz1234567890'.slice(-32, -6)",
-        "'efghijklmnopqrstuvwxyz1234'");
+     "'efghijklmnopqrstuvwxyz1234'");
 
 shouldBe("'abC1'.toUpperCase()", "'ABC1'");
 shouldBe("'AbC2'.toLowerCase()", "'abc2'");
 
+// String.prototype.localeCompare()
+// ### not really testing the locale aspect
+shouldBe("'a'.localeCompare('a')", "0");
+shouldBe("'a'.localeCompare('aa') < 0", "true");
+shouldBe("'a'.localeCompare('x') < 0", "true");
+shouldBe("'x'.localeCompare('a') > 0", "true");
+shouldBe("''.localeCompare('')", "0");
+shouldBe("''.localeCompare()", "0");
+shouldBe("''.localeCompare(undefined)", "-1");
+shouldBe("''.localeCompare(null)", "-1");
+shouldBe("'a'.localeCompare('')", "1");
+shouldBe("'a'.localeCompare()", "0");
+
 // warning: prototype modification below
 shouldBe("'abc'[0]", "'a'");
 shouldBeUndefined("'abc'[-1]");
+shouldBeUndefined("'abc'[-4]");
 shouldBeUndefined("'abc'[10]");
 String.prototype[10] = "x";
 shouldBe("'abc'[10]", "'x'");