aboutsummaryrefslogtreecommitdiff
path: root/javatests/com/android/messageformat/SimpleMessageFormatTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'javatests/com/android/messageformat/SimpleMessageFormatTest.java')
-rw-r--r--javatests/com/android/messageformat/SimpleMessageFormatTest.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/javatests/com/android/messageformat/SimpleMessageFormatTest.java b/javatests/com/android/messageformat/SimpleMessageFormatTest.java
new file mode 100644
index 0000000..e132b14
--- /dev/null
+++ b/javatests/com/android/messageformat/SimpleMessageFormatTest.java
@@ -0,0 +1,82 @@
+/*
+ *******************************************************************************
+ * 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));
+ }
+}
+