package net.time4j.i18n; import java.util.Locale; import net.time4j.format.NumberType; import net.time4j.format.PluralCategory; import net.time4j.format.PluralRules; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(JUnit4.class) public class PluralRulesTest { @Test public void englishCardinals() { PluralRules rules = PluralRules.of(Locale.ENGLISH, NumberType.CARDINALS); assertThat(rules.getCategory(0), is(PluralCategory.OTHER)); assertThat(rules.getCategory(1), is(PluralCategory.ONE)); assertThat(rules.getCategory(2), is(PluralCategory.OTHER)); assertThat(rules.getCategory(11), is(PluralCategory.OTHER)); } @Test public void englishOrdinals() { PluralRules rules = PluralRules.of(Locale.ENGLISH, NumberType.ORDINALS); assertThat(rules.getCategory(0), is(PluralCategory.OTHER)); assertThat(rules.getCategory(1), is(PluralCategory.ONE)); assertThat(rules.getCategory(21), is(PluralCategory.ONE)); assertThat(rules.getCategory(31), is(PluralCategory.ONE)); assertThat(rules.getCategory(51), is(PluralCategory.ONE)); assertThat(rules.getCategory(101), is(PluralCategory.ONE)); assertThat(rules.getCategory(2), is(PluralCategory.TWO)); assertThat(rules.getCategory(22), is(PluralCategory.TWO)); assertThat(rules.getCategory(92), is(PluralCategory.TWO)); assertThat(rules.getCategory(3), is(PluralCategory.FEW)); assertThat(rules.getCategory(23), is(PluralCategory.FEW)); assertThat(rules.getCategory(24), is(PluralCategory.OTHER)); assertThat(rules.getCategory(10), is(PluralCategory.OTHER)); assertThat(rules.getCategory(11), is(PluralCategory.OTHER)); assertThat(rules.getCategory(12), is(PluralCategory.OTHER)); assertThat(rules.getCategory(13), is(PluralCategory.OTHER)); assertThat(rules.getCategory(14), is(PluralCategory.OTHER)); assertThat(rules.getCategory(20), is(PluralCategory.OTHER)); assertThat(rules.getCategory(30), is(PluralCategory.OTHER)); assertThat(rules.getCategory(111), is(PluralCategory.OTHER)); } @Test public void germanCardinals() { PluralRules rules = PluralRules.of(Locale.GERMAN, NumberType.CARDINALS); assertThat(rules.getCategory(0), is(PluralCategory.OTHER)); assertThat(rules.getCategory(1), is(PluralCategory.ONE)); assertThat(rules.getCategory(2), is(PluralCategory.OTHER)); assertThat(rules.getCategory(11), is(PluralCategory.OTHER)); } @Test public void germanOrdinals() { PluralRules rules = PluralRules.of(Locale.GERMAN, NumberType.ORDINALS); assertThat(rules.getCategory(0), is(PluralCategory.OTHER)); assertThat(rules.getCategory(1), is(PluralCategory.OTHER)); assertThat(rules.getCategory(2), is(PluralCategory.OTHER)); assertThat(rules.getCategory(11), is(PluralCategory.OTHER)); assertThat(rules.getCategory(56), is(PluralCategory.OTHER)); } @Test public void frenchCardinals() { PluralRules rules = PluralRules.of(Locale.FRENCH, NumberType.CARDINALS); assertThat(rules.getCategory(0), is(PluralCategory.ONE)); assertThat(rules.getCategory(1), is(PluralCategory.ONE)); assertThat(rules.getCategory(2), is(PluralCategory.OTHER)); assertThat(rules.getCategory(11), is(PluralCategory.OTHER)); } @Test public void frenchOrdinals() { PluralRules rules = PluralRules.of(Locale.FRENCH, NumberType.ORDINALS); assertThat(rules.getCategory(0), is(PluralCategory.OTHER)); assertThat(rules.getCategory(1), is(PluralCategory.ONE)); assertThat(rules.getCategory(2), is(PluralCategory.OTHER)); assertThat(rules.getCategory(11), is(PluralCategory.OTHER)); } @Test public void arabicCardinals() { PluralRules rules = PluralRules.of(new Locale("ar"), NumberType.CARDINALS); assertThat(rules.getCategory(0), is(PluralCategory.ZERO)); assertThat(rules.getCategory(1), is(PluralCategory.ONE)); assertThat(rules.getCategory(2), is(PluralCategory.TWO)); assertThat(rules.getCategory(3), is(PluralCategory.FEW)); assertThat(rules.getCategory(10), is(PluralCategory.FEW)); assertThat(rules.getCategory(107), is(PluralCategory.FEW)); assertThat(rules.getCategory(11), is(PluralCategory.MANY)); assertThat(rules.getCategory(138), is(PluralCategory.MANY)); assertThat(rules.getCategory(100), is(PluralCategory.OTHER)); assertThat(rules.getCategory(101), is(PluralCategory.OTHER)); assertThat(rules.getCategory(102), is(PluralCategory.OTHER)); } @Test public void russianCardinals() { PluralRules rules = PluralRules.of(new Locale("ru"), NumberType.CARDINALS); assertThat(rules.getCategory(1), is(PluralCategory.ONE)); assertThat(rules.getCategory(21), is(PluralCategory.ONE)); assertThat(rules.getCategory(2), is(PluralCategory.FEW)); assertThat(rules.getCategory(34), is(PluralCategory.FEW)); assertThat(rules.getCategory(0), is(PluralCategory.MANY)); assertThat(rules.getCategory(5), is(PluralCategory.MANY)); assertThat(rules.getCategory(19), is(PluralCategory.MANY)); assertThat(rules.getCategory(100), is(PluralCategory.MANY)); } @Test public void chineseCardinals() { PluralRules rules = PluralRules.of(new Locale("zh"), NumberType.CARDINALS); assertThat(rules.getCategory(0), is(PluralCategory.OTHER)); assertThat(rules.getCategory(1), is(PluralCategory.OTHER)); assertThat(rules.getCategory(77), is(PluralCategory.OTHER)); } }