]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-52_1/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java
Clean up imports.
[Dictionary.git] / jars / icu4j-52_1 / main / tests / core / src / com / ibm / icu / dev / test / format / ListFormatterTest.java
1 /*
2  *******************************************************************************
3  * Copyright (C) 2012-2013, Google, International Business Machines Corporation and
4  * others. All Rights Reserved.
5  *******************************************************************************
6  */
7 package com.ibm.icu.dev.test.format;
8
9 import java.util.ArrayList;
10 import java.util.Locale;
11
12 import com.ibm.icu.dev.test.TestFmwk;
13 import com.ibm.icu.text.ListFormatter;
14 import com.ibm.icu.util.ULocale;
15
16 public class ListFormatterTest extends TestFmwk {
17     public static void main(String[] args) {
18         new ListFormatterTest().run(args);
19     }
20
21     String[] HardcodedTestData = {
22             "",
23             "A",
24             "A and B",
25             "A; B, and C",
26             "A; B, C, and D",
27             "A; B, C, D, and E"
28     };
29
30     public void TestBasic() {
31         ListFormatter formatter = new ListFormatter("{0} and {1}", "{0}; {1}", "{0}, {1}", "{0}, and {1}");
32         checkData(formatter, HardcodedTestData);
33     }
34
35     String[] EnglishTestData = {
36             "",
37             "A",
38             "A and B",
39             "A, B, and C",
40             "A, B, C, and D",
41             "A, B, C, D, and E"
42     };
43
44     public void TestEnglish() {
45         checkData(ListFormatter.getInstance(ULocale.ENGLISH), EnglishTestData);
46         checkData(ListFormatter.getInstance(ULocale.US), EnglishTestData);
47         // Redundant tests for code coverage.
48         checkData(ListFormatter.getInstance(Locale.ENGLISH), EnglishTestData);
49         if (isDefaultLocaleEnglishLike()) {
50             checkData(ListFormatter.getInstance(), EnglishTestData);
51         }
52     }
53
54     String[] JapaneseTestData = {
55             "",
56             "A",
57             "A、B",
58             "A、B、C",
59             "A、B、C、D",
60             "A、B、C、D、E"
61     };
62
63     public void TestJapanese() {
64         checkData(ListFormatter.getInstance(ULocale.JAPANESE), JapaneseTestData);
65     }
66
67     String[] outOfOrderTestData = {
68             "",
69             "A",
70             "B after A",
71             "C in the last after B after the first A",
72             "D in the last after C after B after the first A",
73             "E in the last after D after C after B after the first A"
74     };
75     public void TestPatternOutOfOrder() {
76         ListFormatter formatter = new ListFormatter("{1} after {0}", "{1} after the first {0}", "{1} after {0}",
77                                                     "{1} in the last after {0}");
78         checkData(formatter, outOfOrderTestData);
79     }
80
81     String[] RootTestData = {
82             "",
83             "A",
84             "A, B",
85             "A, B, C",
86             "A, B, C, D",
87             "A, B, C, D, E"
88     };
89
90     public void TestSpecial() {
91         checkData(ListFormatter.getInstance(ULocale.ROOT), RootTestData);
92         if (isDefaultLocaleEnglishLike()) {
93           checkData(ListFormatter.getInstance(new ULocale("xxx")), EnglishTestData);
94         }
95     }
96
97     public void checkData(ListFormatter listFormat, String[] strings) {
98         assertEquals("0", strings[0], listFormat.format());
99         assertEquals("1", strings[1], listFormat.format("A"));
100         assertEquals("2", strings[2], listFormat.format("A", "B"));
101         assertEquals("3", strings[3], listFormat.format("A", "B", "C"));
102         assertEquals("4", strings[4], listFormat.format("A", "B", "C", "D"));
103         assertEquals("5", strings[5], listFormat.format("A", "B", "C", "D", "E"));
104     }
105     
106     public void TestFromList() {
107         ListFormatter listFormatter = ListFormatter.getInstance(ULocale.ENGLISH);
108         ArrayList<String> list = new ArrayList<String>();
109         list.add("A");
110         list.add("B");
111         list.add("C");
112         assertEquals("list", "A, B, and C", listFormatter.format(list));
113     }
114     
115     public void TestCreatePatternForNumItems() {
116         ListFormatter listFormatter = ListFormatter.getInstance(ULocale.ENGLISH);
117         assertEquals(
118                 "createPatternForNumItems",
119                 "{0}, {1}, and {2}",
120                 listFormatter.getPatternForNumItems(3));        
121     }
122     
123     public void TestGetPatternForNumItemsException() {
124         ListFormatter listFormatter = ListFormatter.getInstance(ULocale.ENGLISH);
125         try {
126             listFormatter.getPatternForNumItems(0);
127             fail("IllegalArgumentException expected.");
128         } catch (IllegalArgumentException expected) {
129             // expected.
130         }
131     }
132     
133     public void TestGetLocale() {
134         assertEquals(
135                 "getLocale", ULocale.ENGLISH, ListFormatter.getInstance(ULocale.ENGLISH).getLocale());
136     }
137     
138     public void Test9946() {
139         ListFormatter listFormatter = ListFormatter.getInstance(ULocale.ENGLISH);
140         assertEquals("bug 9946", "{0}, {1}, and {2}", listFormatter.format("{0}", "{1}", "{2}"));
141     }
142
143     private boolean isDefaultLocaleEnglishLike() {
144         ULocale defaultLocale = ULocale.getDefault(ULocale.Category.FORMAT);
145         return defaultLocale.equals(ULocale.ENGLISH) || defaultLocale.equals(ULocale.US);
146     }
147 }