17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2003-2012, Google, International Business Machines Corporation and * 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. * 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert*/ 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.util; 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Arrays; 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.List; 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.dev.test.TestFmwk; 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.GenderInfo; 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.GenderInfo.Gender; 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.ULocale; 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class GenderInfoTest extends TestFmwk { 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static void main(String[] args) { 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new GenderInfoTest().run(args); 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static GenderInfo NEUTRAL_LOCALE = GenderInfo.getInstance(ULocale.ENGLISH); 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static GenderInfo MIXED_NEUTRAL_LOCALE = GenderInfo.getInstance(new ULocale("is")); 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static GenderInfo MALE_TAINTS_LOCALE = GenderInfo.getInstance(ULocale.FRENCH); 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestEmpty() { 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Gender of the empty list is always OTHER regardless of gender style. 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(Gender.OTHER, Gender.OTHER, Gender.OTHER); 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestOne() { 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Gender of single item list is always gender of sole item regardless of 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // gender style. 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (Gender g : Gender.values()) { 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(g, g, g, g); 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestOther() { 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(Gender.OTHER, Gender.MALE, Gender.MALE, Gender.MALE, Gender.MALE); 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.MALE, Gender.FEMALE); 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.MALE, Gender.OTHER); 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.FEMALE, Gender.MALE); 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(Gender.OTHER, Gender.FEMALE, Gender.FEMALE, Gender.FEMALE, Gender.FEMALE); 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.FEMALE, Gender.OTHER); 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.OTHER, Gender.MALE); 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.OTHER, Gender.FEMALE); 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.OTHER, Gender.OTHER); 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void check(Gender neutral, Gender mixed, Gender taints, Gender... genders) { 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert List<Gender> mixed0 = Arrays.asList(genders); 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("neutral " + mixed0, neutral, NEUTRAL_LOCALE.getListGender(mixed0)); 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("mixed neutral " + mixed0, mixed, MIXED_NEUTRAL_LOCALE.getListGender(mixed0)); 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("male taints " + mixed0, taints, MALE_TAINTS_LOCALE.getListGender(mixed0)); 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestFallback() { 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("Strange locale = root", GenderInfo.getInstance(ULocale.ROOT), GenderInfo.getInstance(new ULocale("xxx"))); 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("Strange locale = root", GenderInfo.getInstance(ULocale.FRANCE), GenderInfo.getInstance(ULocale.CANADA_FRENCH)); 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 65