From 57d4e752115bbe70ea2f3443a02ea2b45f48c106 Mon Sep 17 00:00:00 2001 From: Peter Edberg Date: Mon, 5 Dec 2011 06:00:10 +0000 Subject: [PATCH] ICU-7930 J, don't limit base skeleton field length to 3 X-SVN-Rev: 31029 --- .../icu/text/DateTimePatternGenerator.java | 2 +- .../test/format/DateTimeGeneratorTest.java | 34 ++++++++++++++++--- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java index cf13eb2af27..c53f55b8a64 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java @@ -1990,7 +1990,7 @@ public class DateTimePatternGenerator implements Freezable 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]; diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java index a6ab10df24c..5cf4d1d319d 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java @@ -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