mirror of https://github.com/FreeCol/freecol.git
109 lines
4.4 KiB
Java
109 lines
4.4 KiB
Java
/**
|
|
* Copyright (C) 2002-2022 The FreeCol Team
|
|
*
|
|
* This file is part of FreeCol.
|
|
*
|
|
* FreeCol is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* FreeCol is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with FreeCol. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
package net.sf.freecol.common.i18n;
|
|
|
|
import java.io.File;
|
|
import java.io.InputStream;
|
|
import java.io.IOException;
|
|
import java.nio.file.Files;
|
|
|
|
import javax.xml.stream.XMLStreamException;
|
|
|
|
import net.sf.freecol.common.i18n.Number.Category;
|
|
import net.sf.freecol.util.test.FreeColTestCase;
|
|
|
|
|
|
public class CLDRTest extends FreeColTestCase {
|
|
|
|
public void testRuleParsing() {
|
|
Rule rule = new Rule("n mod 10 in 2..4 and n mod 100 not in 12..14");
|
|
assertTrue(rule.matches(2));
|
|
assertTrue(rule.matches(102));
|
|
assertTrue(rule.matches(103));
|
|
assertFalse(rule.matches(1));
|
|
assertFalse(rule.matches(5));
|
|
assertFalse(rule.matches(112));
|
|
|
|
DefaultNumberRule arabic = new DefaultNumberRule();
|
|
arabic.addRule(Category.zero, "n is 0");
|
|
arabic.addRule(Category.one, "n is 1");
|
|
arabic.addRule(Category.two, "n is 2");
|
|
arabic.addRule(Category.few, "N Mod 100 in 3.. 10");
|
|
arabic.addRule(Category.many, "n MOD 100 in 11 ..99");
|
|
|
|
assertEquals(Category.zero, arabic.getCategory(0));
|
|
assertEquals(Category.one, arabic.getCategory(1));
|
|
assertEquals(Category.two, arabic.getCategory(2));
|
|
assertEquals(Category.few, arabic.getCategory(3));
|
|
assertEquals(Category.few, arabic.getCategory(7));
|
|
assertEquals(Category.few, arabic.getCategory(10));
|
|
assertEquals(Category.many, arabic.getCategory(11));
|
|
assertEquals(Category.many, arabic.getCategory(99));
|
|
assertEquals(Category.many, arabic.getCategory(2345));
|
|
}
|
|
|
|
public void testPlurals() {
|
|
NumberRules numberRules;
|
|
File inputFile = new File("data/strings/plurals.xml");
|
|
assertTrue(inputFile.exists());
|
|
try (InputStream in = Files.newInputStream(inputFile.toPath())) {
|
|
numberRules = new NumberRules(in);
|
|
} catch (IOException|XMLStreamException ex) {
|
|
fail(ex.toString());
|
|
}
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("az"));
|
|
assertTrue(NumberRules.getNumberForLanguage("az") instanceof OtherNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("ko"));
|
|
assertTrue(NumberRules.getNumberForLanguage("ko") instanceof OtherNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("th"));
|
|
assertTrue(NumberRules.getNumberForLanguage("th") instanceof OtherNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("en"));
|
|
assertTrue(NumberRules.getNumberForLanguage("en") instanceof PluralNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("it"));
|
|
assertTrue(NumberRules.getNumberForLanguage("it") instanceof PluralNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("pt"));
|
|
assertTrue(NumberRules.getNumberForLanguage("pt") instanceof PluralNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("ak"));
|
|
assertTrue(NumberRules.getNumberForLanguage("ak") instanceof ZeroOneNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("hi"));
|
|
assertTrue(NumberRules.getNumberForLanguage("hi") instanceof ZeroOneNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("wa"));
|
|
assertTrue(NumberRules.getNumberForLanguage("wa") instanceof ZeroOneNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("ga"));
|
|
assertTrue(NumberRules.getNumberForLanguage("ga") instanceof DualNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("smi"));
|
|
assertTrue(NumberRules.getNumberForLanguage("smi") instanceof DualNumberRule);
|
|
|
|
assertNotNull(NumberRules.getNumberForLanguage("sms"));
|
|
assertTrue(NumberRules.getNumberForLanguage("sms") instanceof DualNumberRule);
|
|
}
|
|
}
|