]> granicus.if.org Git - icu/commitdiff
ICU-9725 C GenderInfo must handle single item lists correctly by returning the gender...
authorTravis Keep <keep94@gmail.com>
Tue, 6 Nov 2012 19:29:54 +0000 (19:29 +0000)
committerTravis Keep <keep94@gmail.com>
Tue, 6 Nov 2012 19:29:54 +0000 (19:29 +0000)
X-SVN-Rev: 32761

icu4c/source/i18n/gender.cpp
icu4c/source/test/intltest/genderinfotest.cpp

index f269a2266ffba237b3c13cda5aac72c9bc082c25..1d343eb742548ec12f03b33366f4ba96301e4165 100644 (file)
@@ -173,7 +173,7 @@ UGender GenderInfo::getListGender(const UGender* genders, int32_t length, UError
   if (U_FAILURE(status)) {
     return UGENDER_OTHER;
   }
-  if (length == 0 || _style == NEUTRAL) {
+  if (length == 0) {
     return UGENDER_OTHER;
   }
   if (length == 1) {
@@ -182,6 +182,8 @@ UGender GenderInfo::getListGender(const UGender* genders, int32_t length, UError
   UBool has_female = FALSE;
   UBool has_male = FALSE;
   switch (_style) {
+    case NEUTRAL:
+      return UGENDER_OTHER;
     case MIXED_NEUTRAL:
       for (int32_t i = 0; i < length; ++i) {
         switch (genders[i]) {
index 535e5fa3a4c392a666cfd98d6d39d4a24eadc5b7..97a3e67d2492b1e32a480a476869bbcf6a1207c7 100644 (file)
@@ -55,8 +55,8 @@ void GenderInfoTest::runIndexedTest(int32_t index, UBool exec, const char *&name
 
 void GenderInfoTest::TestGetListGender() {
     check(UGENDER_OTHER, UGENDER_OTHER, UGENDER_OTHER, NULL, 0);
-    check(UGENDER_OTHER, UGENDER_FEMALE, UGENDER_FEMALE, kSingleFemale, LENGTHOF(kSingleFemale));
-    check(UGENDER_OTHER, UGENDER_MALE, UGENDER_MALE, kSingleMale, LENGTHOF(kSingleMale));
+    check(UGENDER_FEMALE, UGENDER_FEMALE, UGENDER_FEMALE, kSingleFemale, LENGTHOF(kSingleFemale));
+    check(UGENDER_MALE, UGENDER_MALE, UGENDER_MALE, kSingleMale, LENGTHOF(kSingleMale));
     check(UGENDER_OTHER, UGENDER_OTHER, UGENDER_OTHER, kSingleOther, LENGTHOF(kSingleOther));
 
     check(UGENDER_OTHER, UGENDER_FEMALE, UGENDER_FEMALE, kAllFemale, LENGTHOF(kAllFemale));