return;
}
- const char* legacy_value =
- uloc_toLegacyType(keywordName_nul.data(), keywordValue_nul.data());
+ const char* legacy_value = nullptr;
- if (legacy_value == nullptr) {
- status = U_ILLEGAL_ARGUMENT_ERROR;
- return;
+ if (!keywordValue_nul.isEmpty()) {
+ legacy_value =
+ uloc_toLegacyType(keywordName_nul.data(), keywordValue_nul.data());
+
+ if (legacy_value == nullptr) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
}
setKeywordValue(legacy_key, legacy_value, status);
static const char expected[] = "de@calendar=buddhist;collation=phonebook";
assertEquals("", expected, l.getName());
+
+ l.setUnicodeKeywordValue("cu", nullptr, status);
+ status.errIfFailureAndReset();
+ assertEquals("", expected, l.getName());
+
+ l.setUnicodeKeywordValue("!!", nullptr, status);
+ assertEquals("status", U_ILLEGAL_ARGUMENT_ERROR, status.reset());
+ assertEquals("", expected, l.getName());
+
+ l.setUnicodeKeywordValue("co", "!!", status);
+ assertEquals("status", U_ILLEGAL_ARGUMENT_ERROR, status.reset());
+ assertEquals("", expected, l.getName());
+
+ l.setUnicodeKeywordValue("co", nullptr, status);
+ status.errIfFailureAndReset();
+
+ l.setUnicodeKeywordValue("ca", "", status);
+ status.errIfFailureAndReset();
+
+ assertEquals("", Locale::getGerman().getName(), l.getName());
}
void