blob: e132b14a1fd3600a0124ea94c1d2707f837fa61e [file] [log] [blame]
/*
*******************************************************************************
* Copyright (C) 2014, International Business Machines Corporation and
* others. All Rights Reserved.
*******************************************************************************
*/
package com.android.messageformat;
import java.util.Date;
import java.util.Locale;
import junit.framework.TestCase;
public class SimpleMessageFormatTest extends TestCase {
public void testBasic() {
assertEquals("one simple argument", "Going to Germany and back",
MessageFormat.formatNamedArgs(
Locale.US, "Going to {place} and back", "place", "Germany"));
}
public void testSelect() {
String msg = "{gender,select,female{her book}male{his book}other{their book}}";
assertEquals("select female", "her book",
MessageFormat.formatNamedArgs(Locale.US, msg, "gender", "female"));
assertEquals("select male", "his book",
MessageFormat.formatNamedArgs(Locale.US, msg, "gender", "male"));
assertEquals("select neutral", "their book",
MessageFormat.formatNamedArgs(Locale.US, msg, "gender", "unknown"));
}
public void testPlural() {
// Using Serbian, see
// http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
Locale sr = new Locale("sr");
String msg =
"{num,plural,offset:1 =1{only {name}}=2{{name} and one other}" +
"one{{name} and #-one others}few{{name} and #-few others}" +
"other{{name} and #... others}}";
assertEquals("plural 1", "only Peter",
MessageFormat.formatNamedArgs(sr, msg, "num", 1, "name", "Peter"));
assertEquals("plural 2", "Paul and one other",
MessageFormat.formatNamedArgs(sr, msg, "num", 2, "name", "Paul"));
assertEquals("plural 22", "Mary and 21-one others",
MessageFormat.formatNamedArgs(sr, msg, "num", 22, "name", "Mary"));
assertEquals("plural 33", "John and 32-few others",
MessageFormat.formatNamedArgs(sr, msg, "num", 33, "name", "John"));
assertEquals("plural 6", "Yoko and 5... others",
MessageFormat.formatNamedArgs(sr, msg, "num", 6, "name", "Yoko"));
}
public void testSelectAndPlural() {
Locale ja = Locale.JAPANESE; // always "other"
String msg =
"{gender,select,female{" +
"{num,plural,=1{her book}other{her # books}}" +
"}male{" +
"{num,plural,=1{his book}other{his # books}}" +
"}other{" +
"{num,plural,=1{their book}other{their # books}}" +
"}}";
assertEquals("female 1", "her book",
MessageFormat.formatNamedArgs(ja, msg, "gender", "female", "num", 1));
assertEquals("male 2", "his 2 books",
MessageFormat.formatNamedArgs(ja, msg, "gender", "male", "num", 2));
assertEquals("unknown 3000", "their 3,000 books",
MessageFormat.formatNamedArgs(ja, msg, "gender", "?", "num", 3000));
}
public void testSelectOrdinal() {
Locale en = Locale.ENGLISH;
String msg =
"{num,selectordinal,one{#st floor}two{#nd floor}few{#rd floor}other{#th floor}}";
assertEquals("91", "91st floor",
MessageFormat.formatNamedArgs(en, msg, "num", 91));
assertEquals("22", "22nd floor",
MessageFormat.formatNamedArgs(en, msg, "num", 22));
assertEquals("33", "33rd floor",
MessageFormat.formatNamedArgs(en, msg, "num", 33));
assertEquals("11", "11th floor",
MessageFormat.formatNamedArgs(en, msg, "num", 11));
}
}