ICU-9725 C GenderInfo must handle single item lists correctly by returning the gender of the sole item.

X-SVN-Rev: 32761
This commit is contained in:
Travis Keep 2012-11-06 19:29:54 +00:00
parent d328bb3289
commit 69d9432ee2
2 changed files with 5 additions and 3 deletions

View File

@ -173,7 +173,7 @@ UGender GenderInfo::getListGender(const UGender* genders, int32_t length, UError
if (U_FAILURE(status)) { if (U_FAILURE(status)) {
return UGENDER_OTHER; return UGENDER_OTHER;
} }
if (length == 0 || _style == NEUTRAL) { if (length == 0) {
return UGENDER_OTHER; return UGENDER_OTHER;
} }
if (length == 1) { if (length == 1) {
@ -182,6 +182,8 @@ UGender GenderInfo::getListGender(const UGender* genders, int32_t length, UError
UBool has_female = FALSE; UBool has_female = FALSE;
UBool has_male = FALSE; UBool has_male = FALSE;
switch (_style) { switch (_style) {
case NEUTRAL:
return UGENDER_OTHER;
case MIXED_NEUTRAL: case MIXED_NEUTRAL:
for (int32_t i = 0; i < length; ++i) { for (int32_t i = 0; i < length; ++i) {
switch (genders[i]) { switch (genders[i]) {

View File

@ -55,8 +55,8 @@ void GenderInfoTest::runIndexedTest(int32_t index, UBool exec, const char *&name
void GenderInfoTest::TestGetListGender() { void GenderInfoTest::TestGetListGender() {
check(UGENDER_OTHER, UGENDER_OTHER, UGENDER_OTHER, NULL, 0); check(UGENDER_OTHER, UGENDER_OTHER, UGENDER_OTHER, NULL, 0);
check(UGENDER_OTHER, UGENDER_FEMALE, UGENDER_FEMALE, kSingleFemale, LENGTHOF(kSingleFemale)); check(UGENDER_FEMALE, UGENDER_FEMALE, UGENDER_FEMALE, kSingleFemale, LENGTHOF(kSingleFemale));
check(UGENDER_OTHER, UGENDER_MALE, UGENDER_MALE, kSingleMale, LENGTHOF(kSingleMale)); check(UGENDER_MALE, UGENDER_MALE, UGENDER_MALE, kSingleMale, LENGTHOF(kSingleMale));
check(UGENDER_OTHER, UGENDER_OTHER, UGENDER_OTHER, kSingleOther, LENGTHOF(kSingleOther)); check(UGENDER_OTHER, UGENDER_OTHER, UGENDER_OTHER, kSingleOther, LENGTHOF(kSingleOther));
check(UGENDER_OTHER, UGENDER_FEMALE, UGENDER_FEMALE, kAllFemale, LENGTHOF(kAllFemale)); check(UGENDER_OTHER, UGENDER_FEMALE, UGENDER_FEMALE, kAllFemale, LENGTHOF(kAllFemale));