From 9d230f923c51bb72af9420e8cf53a019894a8e52 Mon Sep 17 00:00:00 2001 From: Rich Gillam <62772518+richgillam@users.noreply.github.com> Date: Thu, 14 Jul 2022 17:40:18 -0700 Subject: [PATCH] ICU-21939 Fix bogus "conflicting fields" error in DateIntervalFormat. --- icu4c/source/test/intltest/dtifmtts.cpp | 13 +++++++++++++ icu4c/source/test/intltest/dtifmtts.h | 2 ++ .../com/ibm/icu/text/DateTimePatternGenerator.java | 4 ++-- .../icu/dev/test/format/DateIntervalFormatTest.java | 10 ++++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/icu4c/source/test/intltest/dtifmtts.cpp b/icu4c/source/test/intltest/dtifmtts.cpp index 82322019b2a..e563212441b 100644 --- a/icu4c/source/test/intltest/dtifmtts.cpp +++ b/icu4c/source/test/intltest/dtifmtts.cpp @@ -65,6 +65,7 @@ void DateIntervalFormatTest::runIndexedTest( int32_t index, UBool exec, const ch TESTCASE_AUTO(testTicket21222GregorianEraDiff); TESTCASE_AUTO(testTicket21222ROCEraDiff); TESTCASE_AUTO(testTicket21222JapaneseEraDiff); + TESTCASE_AUTO(testTicket21939); TESTCASE_AUTO_END; } @@ -2372,4 +2373,16 @@ void DateIntervalFormatTest::testTicket21222JapaneseEraDiff() { verifyCategoryAndField(formatted, expectedCategory, expectedField, status); } +void DateIntervalFormatTest::testTicket21939() { + IcuTestErrorCode err(*this, "testTicket21939"); + LocalPointer dif(DateIntervalFormat::createInstance(u"rMdhm", Locale::forLanguageTag("en-u-ca-chinese", err), err)); + + if (assertSuccess("Error creating DateIntervalFormat", err)) { + const DateFormat* df = dif->getDateFormat(); + const SimpleDateFormat* sdf = dynamic_cast(df); + UnicodeString pattern; + assertEquals("Wrong pattern", u"M/d/r, h:mm\u202Fa", sdf->toPattern(pattern)); + } +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/icu4c/source/test/intltest/dtifmtts.h b/icu4c/source/test/intltest/dtifmtts.h index 428b209a095..bced7292ed0 100644 --- a/icu4c/source/test/intltest/dtifmtts.h +++ b/icu4c/source/test/intltest/dtifmtts.h @@ -88,6 +88,8 @@ public: void testTicket21222GregorianEraDiff(); void testTicket21222ROCEraDiff(); void testTicket21222JapaneseEraDiff(); + + void testTicket21939(); private: /** 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 3792850a8b2..c649964488d 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 @@ -2804,8 +2804,8 @@ public class DateTimePatternGenerator implements Freezable