From 9c70152d45286ca832438647af518305e7f3db86 Mon Sep 17 00:00:00 2001 From: Yoshito Umaoka Date: Mon, 25 Sep 2017 15:19:02 +0000 Subject: [PATCH] ICU-13209 Made Islamic calendar subtype detection code case insensitive. X-SVN-Rev: 40456 --- .../core/src/com/ibm/icu/impl/CalendarUtil.java | 7 +++++-- .../com/ibm/icu/dev/test/calendar/IslamicTest.java | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java index a463278ad3c..83da8ce778f 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java @@ -8,6 +8,7 @@ */ package com.ibm.icu.impl; +import java.util.Locale; import java.util.Map; import java.util.MissingResourceException; import java.util.TreeMap; @@ -17,7 +18,7 @@ import com.ibm.icu.util.UResourceBundle; /** * Calendar utilities. - * + * * Date/time format service classes in com.ibm.icu.text packages * sometimes need to access calendar internal APIs. But calendar * classes are in com.ibm.icu.util package, so the package local @@ -40,7 +41,9 @@ public final class CalendarUtil { public static String getCalendarType(ULocale loc) { String calType = loc.getKeywordValue(CALKEY); if (calType != null) { - return calType; + // Convert to lower case, because getKeywordValue does not + // canonicalize keyword value. + return calType.toLowerCase(Locale.ROOT); } // Canonicalize, so grandfathered variant will be transformed to keywords diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IslamicTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IslamicTest.java index ef0ddaf6495..0b7de191112 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IslamicTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IslamicTest.java @@ -1015,6 +1015,20 @@ public class IslamicTest extends CalendarTestFmwk { errln("non civil calc type generated - " + thisCalcType); } + islamicLoc = new ULocale("ar_SA@calendar=ISLAMIC-UMALQURA"); + is_cal = new IslamicCalendar(islamicLoc); + thisCalcType = is_cal.getType(); + if (!"islamic-umalqura".equalsIgnoreCase(thisCalcType)) { + errln("non umalqura calc type generated - " + thisCalcType); + } + + islamicLoc = new ULocale("ar_SA@calendar=ISLAMIC-CIVIL"); + is_cal = new IslamicCalendar(islamicLoc); + thisCalcType = is_cal.getType(); + if (!"islamic-civil".equalsIgnoreCase(thisCalcType)) { + errln("non civil calc type generated - " + thisCalcType); + } + islamicLoc = new ULocale("ar_SA@calendar=islamic-tbla"); is_cal = new IslamicCalendar(islamicLoc); thisCalcType = is_cal.getType();