mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-04 13:05:31 +00:00
ICU-22575 Change AvailableFormatsSink to allow locales to inherit availableFormats items from the root locale.
This commit is contained in:
parent
394ebaaee0
commit
bcae6f2a43
7 changed files with 19 additions and 14 deletions
|
@ -1023,7 +1023,7 @@ struct DateTimePatternGenerator::AvailableFormatsSink : public ResourceSink {
|
|||
AvailableFormatsSink(DateTimePatternGenerator& _dtpg) : dtpg(_dtpg) {}
|
||||
virtual ~AvailableFormatsSink();
|
||||
|
||||
virtual void put(const char *key, ResourceValue &value, UBool isRoot,
|
||||
virtual void put(const char *key, ResourceValue &value, UBool /*isRoot*/,
|
||||
UErrorCode &errorCode) override {
|
||||
const UnicodeString formatKey(key, -1, US_INV);
|
||||
if (!dtpg.isAvailableFormatSet(formatKey) ) {
|
||||
|
@ -1032,7 +1032,7 @@ struct DateTimePatternGenerator::AvailableFormatsSink : public ResourceSink {
|
|||
// derived from std patterns, but not a previous availableFormats entry:
|
||||
const UnicodeString& formatValue = value.getUnicodeString(errorCode);
|
||||
conflictingPattern.remove();
|
||||
dtpg.addPatternWithSkeleton(formatValue, &formatKey, !isRoot, conflictingPattern, errorCode);
|
||||
dtpg.addPatternWithSkeleton(formatValue, &formatKey, true, conflictingPattern, errorCode);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -653,7 +653,7 @@ static void TestDateTimePatterns(void) {
|
|||
{ "ha", { u"EEEE d MMMM, y 'da' HH:mm",
|
||||
u"d MMMM, y 'da' HH:mm",
|
||||
u"d MMM, y, HH:mm",
|
||||
u"d/M/y, HH:mm" } },
|
||||
u"y-MM-dd, HH:mm" } },
|
||||
{ NULL, { NULL, NULL, NULL, NULL } } // terminator
|
||||
};
|
||||
|
||||
|
|
|
@ -1048,7 +1048,7 @@ void DateIntervalFormatTest::testFormat() {
|
|||
|
||||
"th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "d", "10/10 \\u2013 10/11",
|
||||
|
||||
"th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "y", "2550",
|
||||
"th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "y", "\\u0E1E.\\u0E28. 2550",
|
||||
|
||||
|
||||
"th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "MMM", "\\u0E15.\\u0E04.\\u2013\\u0E1E.\\u0E22.",
|
||||
|
@ -2144,7 +2144,7 @@ void DateIntervalFormatTest::testTicket20707() {
|
|||
{u"12\u202FAM", u"00", u"00", u"12\u202FAM", u"12\u202FAM", u"0 (hour: 12)", u"12\u202FAM"},
|
||||
{u"12\u202FAM", u"00", u"00", u"12\u202FAM", u"12\u202FAM", u"0 (hour: 12)", u"12\u202FAM"},
|
||||
// Hour-cycle: K
|
||||
{u"0 am", u"0", u"0", u"0 am", u"0 am", u"0 (\u0918\u0902\u091F\u093E: 0)", u"\u0930\u093E\u0924 0"}
|
||||
{u"0 am", u"00", u"00", u"0 am", u"0 am", u"0 (\u0918\u0902\u091F\u093E: 00)", u"\u0930\u093E\u0924 0"}
|
||||
};
|
||||
|
||||
int32_t i = 0;
|
||||
|
|
|
@ -1168,9 +1168,9 @@ void IntlTestDateTimePatternGeneratorAPI::testC() {
|
|||
{"zh-TW", "CCCCm", "BBBBhh:mm"},
|
||||
{"zh-TW", "CCCCCm", "BBBBBh:mm"},
|
||||
{"zh-TW", "CCCCCCm", "BBBBBhh:mm"},
|
||||
{"de", "Cm", "H:mm"},
|
||||
{"de", "Cm", "HH:mm"},
|
||||
{"de", "CCm", "HH:mm"},
|
||||
{"de", "CCCm", "H:mm"},
|
||||
{"de", "CCCm", "HH:mm"},
|
||||
{"de", "CCCCm", "HH:mm"},
|
||||
{"en", "Cm", "h:mm\\u202Fa"},
|
||||
{"en", "CCm", "hh:mm\\u202Fa"},
|
||||
|
@ -1602,6 +1602,8 @@ void IntlTestDateTimePatternGeneratorAPI::testBestPattern() {
|
|||
{ "en_GB@calendar=coptic", "yMd", u"dd/MM/y GGGGG" },
|
||||
{ "en_GB@calendar=japanese", "yMd", u"dd/MM/y GGGGG" },
|
||||
{ "en_GB@calendar=buddhist", "yMd", u"dd/MM/y GGGGG" },
|
||||
// ICU-22757: Not inheriting availableFormats patterns from root
|
||||
{ "sv_SE", "yMd", u"y-MM-dd" },
|
||||
// ICU-20992: Bad patterns for missing fields
|
||||
{ "ckb_IR", "mmSSS", u"mm:ss\u066bSSS" },
|
||||
{ "ckb_IR", "BSSS", u"SSS \u251c'Dayperiod': B\u2524" },
|
||||
|
@ -1657,7 +1659,7 @@ void IntlTestDateTimePatternGeneratorAPI::testDateTimePatterns() {
|
|||
{ "ha", { UnicodeString(u"EEEE d MMMM, y 'da' HH:mm"),
|
||||
UnicodeString(u"d MMMM, y 'da' HH:mm"),
|
||||
UnicodeString(u"d MMM, y, HH:mm"),
|
||||
UnicodeString(u"d/M/y, HH:mm") } },
|
||||
UnicodeString(u"y-MM-dd, HH:mm") } },
|
||||
{ nullptr, { UnicodeString(""), UnicodeString(""), // terminator
|
||||
UnicodeString(""), UnicodeString("") } },
|
||||
};
|
||||
|
|
|
@ -268,7 +268,7 @@ public class DateTimePatternGenerator implements Freezable<DateTimePatternGenera
|
|||
// Add pattern with its associated skeleton. Override any duplicate derived from std patterns,
|
||||
// but not a previous availableFormats entry:
|
||||
String formatValue = value.toString();
|
||||
addPatternWithSkeleton(formatValue, formatKey, !isRoot, returnInfo);
|
||||
addPatternWithSkeleton(formatValue, formatKey, true, returnInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -692,7 +692,7 @@ public class DateIntervalFormatTest extends CoreTestFmwk {
|
|||
|
||||
"th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "d", "10/10 \\u2013 10/11",
|
||||
|
||||
"th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "y", "2550",
|
||||
"th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "y", "\\u0e1e.\\u0e28. 2550",
|
||||
|
||||
|
||||
"th", "BE 2550 10 10 10:10:10", "BE 2550 11 10 10:10:10", "MMM", "\u0E15.\u0E04.\u2013\u0E1E.\u0E22.",
|
||||
|
@ -2265,7 +2265,7 @@ public class DateIntervalFormatTest extends CoreTestFmwk {
|
|||
{"0\u202FAM", "00", "00", "0\u202FAM", "0\u202FAM", "0 (hour: 00)", "0\u202FAM"},
|
||||
{"12\u202FAM", "00", "00", "12\u202FAM", "12\u202FAM", "0 (hour: 12)", "12\u202FAM"},
|
||||
{"12\u202FAM", "00", "00", "12\u202FAM", "12\u202FAM", "0 (hour: 12)", "12\u202FAM"},
|
||||
{"0 am", "0", "0", "0 am", "0 am", "0 (\u0918\u0902\u091F\u093E: 0)", "\u0930\u093E\u0924 0"}
|
||||
{"0 am", "00", "00", "0 am", "0 am", "0 (\u0918\u0902\u091F\u093E: 00)", "\u0930\u093E\u0924 0"}
|
||||
};
|
||||
|
||||
int i = 0;
|
||||
|
|
|
@ -65,9 +65,9 @@ public class DateTimeGeneratorTest extends CoreTestFmwk {
|
|||
{"zh-TW", "CCCCm", "BBBBhh:mm"},
|
||||
{"zh-TW", "CCCCCm", "BBBBBh:mm"},
|
||||
{"zh-TW", "CCCCCCm", "BBBBBhh:mm"},
|
||||
{"de", "Cm", "H:mm"},
|
||||
{"de", "Cm", "HH:mm"},
|
||||
{"de", "CCm", "HH:mm"},
|
||||
{"de", "CCCm", "H:mm"},
|
||||
{"de", "CCCm", "HH:mm"},
|
||||
{"de", "CCCCm", "HH:mm"},
|
||||
{"en", "Cm", "h:mm\u202Fa"},
|
||||
{"en", "CCm", "hh:mm\u202Fa"},
|
||||
|
@ -1832,6 +1832,9 @@ public class DateTimeGeneratorTest extends CoreTestFmwk {
|
|||
|
||||
// ICU-21873: Missing aliased values
|
||||
"en_001@calendar=islamic", "Ehm", "EEE h:mm\u202Fa",
|
||||
|
||||
// ICU-22575: AvailableFormats not inheriting from root
|
||||
"sv_SE", "yMd", "y-MM-dd",
|
||||
};
|
||||
|
||||
for (int i = 0; i < testCases.length; i += 3) {
|
||||
|
@ -1921,7 +1924,7 @@ public class DateTimeGeneratorTest extends CoreTestFmwk {
|
|||
"EEEE d MMMM, y 'da' HH:mm",
|
||||
"d MMMM, y 'da' HH:mm",
|
||||
"d MMM, y, HH:mm",
|
||||
"d/M/y, HH:mm" } ),
|
||||
"y-MM-dd, HH:mm" } ),
|
||||
};
|
||||
|
||||
String[] enDTPatterns = {
|
||||
|
|
Loading…
Add table
Reference in a new issue