1/* 2 ******************************************************************************* 3 * Copyright (C) 2003-2012, Google, International Business Machines Corporation and * 4 * others. All Rights Reserved. * 5 ******************************************************************************* 6*/ 7package com.ibm.icu.dev.test.util; 8 9import java.util.Arrays; 10import java.util.List; 11 12import com.ibm.icu.dev.test.TestFmwk; 13import com.ibm.icu.util.GenderInfo; 14import com.ibm.icu.util.GenderInfo.Gender; 15import com.ibm.icu.util.ULocale; 16 17public class GenderInfoTest extends TestFmwk { 18 public static void main(String[] args) { 19 new GenderInfoTest().run(args); 20 } 21 22 public static GenderInfo NEUTRAL_LOCALE = GenderInfo.getInstance(ULocale.ENGLISH); 23 public static GenderInfo MIXED_NEUTRAL_LOCALE = GenderInfo.getInstance(new ULocale("is")); 24 public static GenderInfo MALE_TAINTS_LOCALE = GenderInfo.getInstance(ULocale.FRENCH); 25 26 public void TestEmpty() { 27 // Gender of the empty list is always OTHER regardless of gender style. 28 check(Gender.OTHER, Gender.OTHER, Gender.OTHER); 29 } 30 31 public void TestOne() { 32 // Gender of single item list is always gender of sole item regardless of 33 // gender style. 34 for (Gender g : Gender.values()) { 35 check(g, g, g, g); 36 } 37 } 38 39 public void TestOther() { 40 check(Gender.OTHER, Gender.MALE, Gender.MALE, Gender.MALE, Gender.MALE); 41 check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.MALE, Gender.FEMALE); 42 check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.MALE, Gender.OTHER); 43 44 check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.FEMALE, Gender.MALE); 45 check(Gender.OTHER, Gender.FEMALE, Gender.FEMALE, Gender.FEMALE, Gender.FEMALE); 46 check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.FEMALE, Gender.OTHER); 47 48 check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.OTHER, Gender.MALE); 49 check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.OTHER, Gender.FEMALE); 50 check(Gender.OTHER, Gender.OTHER, Gender.MALE, Gender.OTHER, Gender.OTHER); 51 } 52 53 public void check(Gender neutral, Gender mixed, Gender taints, Gender... genders) { 54 List<Gender> mixed0 = Arrays.asList(genders); 55 assertEquals("neutral " + mixed0, neutral, NEUTRAL_LOCALE.getListGender(mixed0)); 56 assertEquals("mixed neutral " + mixed0, mixed, MIXED_NEUTRAL_LOCALE.getListGender(mixed0)); 57 assertEquals("male taints " + mixed0, taints, MALE_TAINTS_LOCALE.getListGender(mixed0)); 58 } 59 60 public void TestFallback() { 61 assertEquals("Strange locale = root", GenderInfo.getInstance(ULocale.ROOT), GenderInfo.getInstance(new ULocale("xxx"))); 62 assertEquals("Strange locale = root", GenderInfo.getInstance(ULocale.FRANCE), GenderInfo.getInstance(ULocale.CANADA_FRENCH)); 63 } 64} 65