]> granicus.if.org Git - icu/commitdiff
ICU-7930 J, don't limit base skeleton field length to 3
authorPeter Edberg <pedberg@unicode.org>
Mon, 5 Dec 2011 06:00:10 +0000 (06:00 +0000)
committerPeter Edberg <pedberg@unicode.org>
Mon, 5 Dec 2011 06:00:10 +0000 (06:00 +0000)
X-SVN-Rev: 31029

icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java

index cf13eb2af2733a82ebb6b5b787b2452b5d2d244f..c53f55b8a64d28c6ea17f225cd899a3928f379b4 100644 (file)
@@ -1990,7 +1990,7 @@ public class DateTimePatternGenerator implements Freezable<DateTimePatternGenera
                 original[typeValue] = field;
                 char repeatChar = (char)row[0];
                 int repeatCount = row[3];
-                if (repeatCount > 3) repeatCount = 3; // hack to discard differences
+                // #7930 removes hack to cap repeatCount at 3
                 if ("GEzvQ".indexOf(repeatChar) >= 0) repeatCount = 1;
                 baseOriginal[typeValue] = Utility.repeat(String.valueOf(repeatChar),repeatCount);
                 int subTypeValue = row[2];
index a6ab10df24cad5b7ff786a8ceb6d913834f14593..5cf4d1d319df4d5a5428ecf3f688b8a49575d9e8 100644 (file)
@@ -275,6 +275,7 @@ public class DateTimeGeneratorTest extends TestFmwk {
         new String[] {"yMMMd", "Jan 13, 1999"},
         new String[] {"Md", "1/13"},
         new String[] {"MMMd", "Jan 13"},
+        new String[] {"MMMMd", "January 13"},
         new String[] {"yQQQ", "Q1 1999"},
         new String[] {"hhmm", "11:58 PM"},
         new String[] {"HHmm", "23:58"},
@@ -291,6 +292,7 @@ public class DateTimeGeneratorTest extends TestFmwk {
         new String[] {"yMMMd", "Jan 13, 11 Heisei"},
         new String[] {"Md", "1/13"},
         new String[] {"MMMd", "Jan 13"},
+        new String[] {"MMMMd", "January 13"},
         new String[] {"yQQQ", "Q1 11 Heisei"},
         new String[] {"hhmm", "11:58 PM"},
         new String[] {"HHmm", "23:58"},
@@ -307,6 +309,7 @@ public class DateTimeGeneratorTest extends TestFmwk {
         new String[] {"yMMMd", "13. Jan 1999"},
         new String[] {"Md", "13.1."},   // 13.1
         new String[] {"MMMd", "13. Jan"},
+        new String[] {"MMMMd", "13. Januar"},
         new String[] {"yQQQ", "Q1 1999"},
         new String[] {"hhmm", "11:58 nachm."},
         new String[] {"HHmm", "23:58"},
@@ -323,6 +326,7 @@ public class DateTimeGeneratorTest extends TestFmwk {
         new String[] {"yMMMd", "13. tammikuuta 1999"},
         new String[] {"Md", "13.1."},
         new String[] {"MMMd", "13. tammikuuta"},
+        new String[] {"MMMMd", "13. tammikuuta"},
         new String[] {"yQQQ", "1. nelj./1999"}, // 1. nelj. 1999 // *** get "expected result" but it seems incorrect, needs investigation
         new String[] {"hhmm", "11.58 ip."},
         new String[] {"HHmm", "23.58"},
@@ -332,6 +336,23 @@ public class DateTimeGeneratorTest extends TestFmwk {
         new String[] {"MMMEd", "ke 13. tammikuuta"},
         new String[] {"Ed", "ke 13."},
         new String[] {"jmmssSSS", "23.58.59,123"},
+        new ULocale("es"),
+        new String[] {"yM", "1/1999"},
+        new String[] {"yMMM", "ene 1999"},
+        new String[] {"yMd", "13/1/1999"},
+        new String[] {"yMMMd", "13 ene 1999"},
+        new String[] {"Md", "13/1"},
+        new String[] {"MMMd", "13 ene"},
+        new String[] {"MMMMd", "13 de enero"},
+        new String[] {"yQQQ", "T1 1999"},
+        new String[] {"hhmm", "11:58 p.m."},
+        new String[] {"HHmm", "23:58"},
+        new String[] {"jjmm", "23:58"},
+        new String[] {"mmss", "58:59"},
+        new String[] {"yyyyMMMM", "enero de 1999"},
+        new String[] {"MMMEd", "mi\u00E9 13 ene"},
+        new String[] {"Ed", "mi\u00E9 13"},
+        new String[] {"jmmssSSS", "23:58:59,123"},
         new ULocale("ja"), // (new locale for testing ticket 6872<-6626)
         new String[] {"yM", "1999/1"},
         new String[] {"yMMM", "1999\u5E741\u6708"},
@@ -339,6 +360,7 @@ public class DateTimeGeneratorTest extends TestFmwk {
         new String[] {"yMMMd", "1999\u5E741\u670813\u65E5"},
         new String[] {"Md", "1/13"},
         new String[] {"MMMd", "1\u670813\u65E5"},
+        new String[] {"MMMMd", "1\u670813\u65E5"},
         new String[] {"yQQQ", "1999/Q1"}, // *** expected result should be "1999Q1" with current data, changed test temporarily to match current result, needs investigation
         new String[] {"hhmm", "\u5348\u5F8C11:58"},
         new String[] {"HHmm", "23:58"},
@@ -355,6 +377,7 @@ public class DateTimeGeneratorTest extends TestFmwk {
         new String[] {"yMMMd", "\u5E73\u621011\u5E741\u670813\u65E5"},
         new String[] {"Md", "1/13"},
         new String[] {"MMMd", "1\u670813\u65E5"},
+        new String[] {"MMMMd", "1\u670813\u65E5"},
         new String[] {"yQQQ", "\u5E73\u621011/Q1"},
         new String[] {"hhmm", "\u5348\u5F8C11:58"},
         new String[] {"HHmm", "23:58"},
@@ -371,6 +394,7 @@ public class DateTimeGeneratorTest extends TestFmwk {
         new String[] {"yMMMd", "1999\u5E741\u670813\u65E5"}, // (fixed expected result per ticket 6872<-6626)
         new String[] {"Md", "1-13"},
         new String[] {"MMMd", "1\u670813\u65E5"}, // (fixed expected result per ticket 6872<-6626)
+        new String[] {"MMMMd", "1\u670813\u65E5"},
         new String[] {"yQQQ", "1999\u5E741\u5B63"},
         new String[] {"hhmm", "\u4E0B\u534811:58"},
         new String[] {"HHmm", "23:58"},
@@ -387,6 +411,7 @@ public class DateTimeGeneratorTest extends TestFmwk {
         new String[] {"yMMMd", "\u6C11\u570B88\u5E741\u670813\u65E5"},
         new String[] {"Md", "1/13"},
         new String[] {"MMMd", "1\u670813\u65E5"},
+        new String[] {"MMMMd", "1\u670813\u65E5"},
         new String[] {"yQQQ", "\u6C11\u570B88 1\u5B63"},
         new String[] {"hhmm", "\u4E0B\u534811:58"},
         new String[] {"HHmm", "23:58"},
@@ -403,6 +428,7 @@ public class DateTimeGeneratorTest extends TestFmwk {
         new String[] {"yMMMd", "13 \u044F\u043D\u0432 1999\u00A0\u0433."},
         new String[] {"Md", "13.1"},
         new String[] {"MMMd", "13 \u044F\u043D\u0432"},
+        new String[] {"MMMMd", "13 \u044F\u043D\u0432\u0430\u0440\u044F"},
         new String[] {"yQQQ", "1-\u0439 \u043A\u0432. 1999 \u0433."},
         new String[] {"hhmm", "11:58 \u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043B\u0443\u0434\u043D\u044F"},
         new String[] {"HHmm", "23:58"},
@@ -706,8 +732,8 @@ public class DateTimeGeneratorTest extends TestFmwk {
        */
       public void TestGetSkeleton(){
           DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
-          String[] cases = {"MMDD","MMMDD","MMM-DD","DD/MMM","ddM"};
-          String[] results = {"MMDD","MMMDD","MMMDD","MMMDD","Mdd"};
+          String[] cases = {"MMDD","MMMDD","MMM-DD","DD/MMM","ddM","MMMMd"};
+          String[] results = {"MMDD","MMMDD","MMMDD","MMMDD","Mdd","MMMMd"};
           for(int i=0; i<cases.length; i++){
               if(!dtpg.getSkeleton(cases[i]).equals(results[i])){
                   errln("DateTimePatternGenerator.getSkeleton(String) did " +
@@ -723,8 +749,8 @@ public class DateTimeGeneratorTest extends TestFmwk {
        */
       public void TestGetBaseSkeleton(){
           DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
-          String[] cases = {"MMDD","MMMDD","MMM-DD","DD/MMM","ddM"};
-          String[] results = {"MD","MMMD","MMMD","MMMD","Md"};
+          String[] cases = {"MMDD","MMMDD","MMM-DD","DD/MMM","ddM","MMMMd"};
+          String[] results = {"MD","MMMD","MMMD","MMMD","Md","MMMMd"};
           for(int i=0; i<cases.length; i++){
               if(!dtpg.getBaseSkeleton(cases[i]).equals(results[i])){
                   errln("DateTimePatternGenerator.getSkeleton(String) did " +