1994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes/*
2994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
3994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * contributor license agreements.  See the NOTICE file distributed with
4994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * this work for additional information regarding copyright ownership.
5994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
6994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * (the "License"); you may not use this file except in compliance with
7994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * the License.  You may obtain a copy of the License at
8994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes *
9994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes *
11994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * Unless required by applicable law or agreed to in writing, software
12994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
13994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * See the License for the specific language governing permissions and
15994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * limitations under the License.
16994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes */
17994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
18994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespackage org.apache.harmony.tests.java.text;
19994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
20994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.ChoiceFormat;
21994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.FieldPosition;
22994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.MessageFormat;
23994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.ParsePosition;
2497a3d514797ffddba65aaa50e352538820a52078Tobias Thiererimport java.util.Arrays;
25de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamathimport java.util.Locale;
26994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
27994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport junit.framework.TestCase;
28994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
29994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespublic class ChoiceFormatTest extends TestCase {
30994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
31994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    double[] limits = new double[] { 0, 1, ChoiceFormat.nextDouble(1),
32994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            ChoiceFormat.nextDouble(2) };
33994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
34994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    String[] formats = new String[] { "Less than one", "one",
35994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            "Between one and two", "Greater than two" };
36994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
37994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    ChoiceFormat f1 = new ChoiceFormat(limits, formats);
38994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
39994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
40994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#ChoiceFormat(double[], java.lang.String[])
41994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
42994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_Constructor$D$Ljava_lang_String() {
43994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method java.text.ChoiceFormat(double [], java.lang.String
44994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // [])
45994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String formattedString;
46994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        double[] appleLimits = { 1, 2, 3, 4, 5 };
47994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String[] appleFormats = { "Tiny Apple", "Small Apple", "Medium Apple",
48994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "Large Apple", "Huge Apple" };
49994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat cf = new ChoiceFormat(appleLimits, appleFormats);
50994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
51994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(Double.NEGATIVE_INFINITY);
52994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("a) Incorrect format returned: " + formattedString,
53994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Tiny Apple"));
54994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(0.5d);
55994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("b) Incorrect format returned: " + formattedString,
56994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Tiny Apple"));
57994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(1d);
58994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("c) Incorrect format returned: " + formattedString,
59994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Tiny Apple"));
60994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(1.5d);
61994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("d) Incorrect format returned: " + formattedString,
62994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Tiny Apple"));
63994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(2d);
64994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("e) Incorrect format returned: " + formattedString,
65994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Small Apple"));
66994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(2.5d);
67994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("f) Incorrect format returned: " + formattedString,
68994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Small Apple"));
69994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(3d);
70994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("g) Incorrect format returned: " + formattedString,
71994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Medium Apple"));
72994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(4d);
73994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("h) Incorrect format returned: " + formattedString,
74994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Large Apple"));
75994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(5d);
76994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("i) Incorrect format returned: " + formattedString,
77994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Huge Apple"));
78994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(5.5d);
79994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("j) Incorrect format returned: " + formattedString,
80994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Huge Apple"));
81994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(6.0d);
82994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("k) Incorrect format returned: " + formattedString,
83994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Huge Apple"));
84994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(Double.POSITIVE_INFINITY);
85994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("l) Incorrect format returned: " + formattedString,
86994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Huge Apple"));
87994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
88994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
89994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
90994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#ChoiceFormat(java.lang.String)
91994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
92994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_ConstructorLjava_lang_String() {
93994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method java.text.ChoiceFormat(java.lang.String)
94994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String formattedString;
95994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String patternString = "-2#Inverted Orange| 0#No Orange| 0<Almost No Orange| 1#Normal Orange| 2#Expensive Orange";
96994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat cf = new ChoiceFormat(patternString);
97994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
98994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(Double.NEGATIVE_INFINITY);
99994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("a) Incorrect format returned: " + formattedString,
100994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Inverted Orange"));
101994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(-3);
102994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("b) Incorrect format returned: " + formattedString,
103994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Inverted Orange"));
104994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(-2);
105994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("c) Incorrect format returned: " + formattedString,
106994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Inverted Orange"));
107994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(-1);
108994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("d) Incorrect format returned: " + formattedString,
109994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Inverted Orange"));
110994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(-0);
111994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("e) Incorrect format returned: " + formattedString,
112994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("No Orange"));
113994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(0);
114994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("f) Incorrect format returned: " + formattedString,
115994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("No Orange"));
116994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(0.1);
117994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("g) Incorrect format returned: " + formattedString,
118994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Almost No Orange"));
119994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(1);
120994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("h) Incorrect format returned: " + formattedString,
121994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Normal Orange"));
122994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(1.5);
123994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("i) Incorrect format returned: " + formattedString,
124994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Normal Orange"));
125994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(2);
126994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("j) Incorrect format returned: " + formattedString,
127994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Expensive Orange"));
128994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(3);
129994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("k) Incorrect format returned: " + formattedString,
130994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Expensive Orange"));
131994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        formattedString = cf.format(Double.POSITIVE_INFINITY);
132994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("l) Incorrect format returned: " + formattedString,
133994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                formattedString.equals("Expensive Orange"));
134994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
135994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
136994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
137994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
138994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#applyPattern(java.lang.String)
139994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
140994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_applyPatternLjava_lang_String() {
141994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method void
142994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // java.text.ChoiceFormat.applyPattern(java.lang.String)
143994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat f = (ChoiceFormat) f1.clone();
144994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f.applyPattern("0#0|1#1");
145994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Incorrect limits", java.util.Arrays.equals(f.getLimits(),
146994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                new double[] { 0, 1 }));
147994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Incorrect formats", java.util.Arrays.equals(f.getFormats(),
148994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                new String[] { "0", "1" }));
149994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
150994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        //Regression for Harmony 540
151994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        double[] choiceLimits = { -1, 0, 1, ChoiceFormat.nextDouble(1) };
152994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String[] choiceFormats = { "is negative", "is zero or fraction",
153994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "is one", "is more than 1" };
154994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
155994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f = new ChoiceFormat("");
156994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f.applyPattern("-1#is negative|0#is zero or fraction|1#is one|1<is more than 1");
157994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Incorrect limits", java.util.Arrays.equals(f.getLimits(),
158994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                choiceLimits));
159994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Incorrect formats", java.util.Arrays.equals(f.getFormats(),
160994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                choiceFormats));
161994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
162994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f = new ChoiceFormat("");
163994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        try {
164994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            f.applyPattern("-1#is negative|0#is zero or fraction|-1#is one|1<is more than 1");
165994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            fail("Expected IllegalArgumentException");
166994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        } catch (IllegalArgumentException e) {
167994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            // Expected
168994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        }
169994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
170994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f = new ChoiceFormat("");
171994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        try {
172994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            f.applyPattern("-1is negative|0#is zero or fraction|1#is one|1<is more than 1");
173994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            fail("Expected IllegalArgumentException");
174994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        } catch (IllegalArgumentException e) {
175994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            // Expected
176994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        }
177994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
178994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f = new ChoiceFormat("");
179994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f.applyPattern("-1<is negative|0#is zero or fraction|1#is one|1<is more than 1");
180994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        choiceLimits[0] = ChoiceFormat.nextDouble(-1);
181994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Incorrect limits", java.util.Arrays.equals(f.getLimits(),
182994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                choiceLimits));
183994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Incorrect formats", java.util.Arrays.equals(f.getFormats(),
184994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                choiceFormats));
185994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
186994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f = new ChoiceFormat("");
187994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f.applyPattern("-1#is negative|0#is zero or fraction|1#is one|1<is more than 1");
188994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String str = "org.apache.harmony.tests.java.text.ChoiceFormat";
189994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f.applyPattern(str);
190994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String ptrn = f.toPattern();
191994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Return value should be empty string for invalid pattern",
192994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                0, ptrn.length());
193994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
194994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
195994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
196994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#clone()
197994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
198994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_clone() {
199994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method java.lang.Object java.text.ChoiceFormat.clone()
200994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat f = (ChoiceFormat) f1.clone();
201994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not equal", f.equals(f1));
202994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        f.setChoices(new double[] { 0, 1, 2 }, new String[] { "0", "1", "2" });
203994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Equal", !f.equals(f1));
204994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
205994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
206994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
207994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#equals(java.lang.Object)
208994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
209994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_equalsLjava_lang_Object() {
210994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method boolean
211994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // java.text.ChoiceFormat.equals(java.lang.Object)
212994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
213994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String patternString = "-2#Inverted Orange| 0#No Orange| 0<Almost No Orange| 1#Normal Orange| 2#Expensive Orange";
214994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        double[] appleLimits = { 1, 2, 3, 4, 5 };
215994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String[] appleFormats = { "Tiny Apple", "Small Apple", "Medium Apple",
216994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "Large Apple", "Huge Apple" };
217994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        double[] orangeLimits = { -2, 0, ChoiceFormat.nextDouble(0), 1, 2 };
218994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String[] orangeFormats = { "Inverted Orange", "No Orange",
219994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "Almost No Orange", "Normal Orange", "Expensive Orange" };
220994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
221994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat appleChoiceFormat = new ChoiceFormat(appleLimits,
222994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                appleFormats);
223994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat orangeChoiceFormat = new ChoiceFormat(orangeLimits,
224994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                orangeFormats);
225994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat orangeChoiceFormat2 = new ChoiceFormat(patternString);
226994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat hybridChoiceFormat = new ChoiceFormat(appleLimits,
227994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                orangeFormats);
228994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
229994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Apples should not equal oranges", !appleChoiceFormat
230994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .equals(orangeChoiceFormat));
231994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Different limit list--should not appear as equal",
232994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                !orangeChoiceFormat.equals(hybridChoiceFormat));
233994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Different format list--should not appear as equal",
234994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                !appleChoiceFormat.equals(hybridChoiceFormat));
235994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Should be equal--identical format", appleChoiceFormat
236994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .equals(appleChoiceFormat));
237994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Should be equals--same limits, same formats",
238994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                orangeChoiceFormat.equals(orangeChoiceFormat2));
239994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
240994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat f2 = new ChoiceFormat(
241994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "0#Less than one|1#one|1<Between one and two|2<Greater than two");
242994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not equal", f1.equals(f2));
243994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
244994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
245994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
246994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#format(double, java.lang.StringBuffer,
247994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     *        java.text.FieldPosition)
248994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
249994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_formatDLjava_lang_StringBufferLjava_text_FieldPosition() {
250994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method java.lang.StringBuffer
251994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // java.text.ChoiceFormat.format(double, java.lang.StringBuffer,
252994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // java.text.FieldPosition)
253994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        FieldPosition field = new FieldPosition(0);
254994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        StringBuffer buf = new StringBuffer();
255994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String r = f1.format(-1, buf, field).toString();
256994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong choice for -1", "Less than one", r);
257994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        buf.setLength(0);
258994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        r = f1.format(0, buf, field).toString();
259994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong choice for 0", "Less than one", r);
260994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        buf.setLength(0);
261994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        r = f1.format(1, buf, field).toString();
262994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong choice for 1", "one", r);
263994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        buf.setLength(0);
264994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        r = f1.format(2, buf, field).toString();
265994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong choice for 2", "Between one and two", r);
266994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        buf.setLength(0);
267994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        r = f1.format(3, buf, field).toString();
268994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong choice for 3", "Greater than two", r);
269994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
270994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Regression test for HARMONY-1081
271994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals(0, new ChoiceFormat("|").format(Double.NaN, new StringBuffer(), new FieldPosition(6)).length());
272994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals(0, new ChoiceFormat("|").format(1, new StringBuffer(), new FieldPosition(6)).length());
273994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Less than one", f1.format(Double.NaN, new StringBuffer(), field).toString());
274994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
275994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
276994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
277994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#format(long, java.lang.StringBuffer,
278994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     *        java.text.FieldPosition)
279994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
280994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_formatJLjava_lang_StringBufferLjava_text_FieldPosition() {
281994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method java.lang.StringBuffer
282994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // java.text.ChoiceFormat.format(long, java.lang.StringBuffer,
283994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // java.text.FieldPosition)
284994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        FieldPosition field = new FieldPosition(0);
285994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        StringBuffer buf = new StringBuffer();
286994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String r = f1.format(0.5, buf, field).toString();
287994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong choice for 0.5", "Less than one", r);
288994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        buf.setLength(0);
289994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        r = f1.format(1.5, buf, field).toString();
290994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong choice for 1.5", "Between one and two", r);
291994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        buf.setLength(0);
292994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        r = f1.format(2.5, buf, field).toString();
293994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong choice for 2.5", "Greater than two", r);
294994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
295994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
296994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
297994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#hashCode()
298994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
299994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_hashCode() {
300994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method int java.text.ChoiceFormat.hashCode()
301994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat f2 = new ChoiceFormat(
302994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "0#Less than one|1#one|1<Between one and two|2<Greater than two");
303994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Different hash", f1.hashCode() == f2.hashCode());
304994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
305994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
306994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
307994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#nextDouble(double)
308994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
309994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_nextDoubleD() {
310994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method double java.text.ChoiceFormat.nextDouble(double)
311994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not greater 5", ChoiceFormat.nextDouble(5) > 5);
312994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not greater 0", ChoiceFormat.nextDouble(0) > 0);
313994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not greater -5", ChoiceFormat.nextDouble(-5) > -5);
314994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not NaN", Double.isNaN(ChoiceFormat.nextDouble(Double.NaN)));
315994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
316994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
317994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
318994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#nextDouble(double, boolean)
319994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
320994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_nextDoubleDZ() {
321994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method double java.text.ChoiceFormat.nextDouble(double,
322994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // boolean)
323994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not greater 0", ChoiceFormat.nextDouble(0, true) > 0);
324994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not less 0", ChoiceFormat.nextDouble(0, false) < 0);
325994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
326994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
327994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
328994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#parse(java.lang.String,
329994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     *        java.text.ParsePosition)
330994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
331994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_parseLjava_lang_StringLjava_text_ParsePosition() {
332994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method java.lang.Number
333994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // java.text.ChoiceFormat.parse(java.lang.String,
334994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // java.text.ParsePosition)
335994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ChoiceFormat format = new ChoiceFormat("1#one|2#two|3#three");
336994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Case insensitive", 0, format
337994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				.parse("One", new ParsePosition(0)).intValue());
338994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
339994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ParsePosition pos = new ParsePosition(0);
340994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Number result = f1.parse("Greater than two", pos);
341994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not a Double1", result instanceof Double);
342994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Wrong value ~>2", result.doubleValue() == ChoiceFormat
343994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .nextDouble(2));
344994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong position ~16", 16, pos.getIndex());
345994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        pos = new ParsePosition(0);
346994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Incorrect result", Double.isNaN(f1.parse("12one", pos)
347994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .doubleValue()));
348994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong position ~0", 0, pos.getIndex());
349994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        pos = new ParsePosition(2);
350994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        result = f1.parse("12one and two", pos);
351994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not a Double2", result instanceof Double);
352994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Ignored parse position", 1.0D, result.doubleValue(), 0.0D);
353994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Wrong position ~5", 5, pos.getIndex());
354994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
355994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
356994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
357994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.ChoiceFormat#previousDouble(double)
358994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
359994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_previousDoubleD() {
360994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method double java.text.ChoiceFormat.previousDouble(double)
361994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not less 5", ChoiceFormat.previousDouble(5) < 5);
362994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not less 0", ChoiceFormat.previousDouble(0) < 0);
363994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not less -5", ChoiceFormat.previousDouble(-5) < -5);
364994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Not NaN", Double.isNaN(ChoiceFormat
365994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .previousDouble(Double.NaN)));
366994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
367994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
368994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	/**
369994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	 * @tests java.text.ChoiceFormat#toPattern()
370994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	 */
371994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_toPattern() {
372994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		// Regression for HARMONY-59
373994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		ChoiceFormat cf = new ChoiceFormat("");
374994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("", cf.toPattern());
375994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
376994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		cf = new ChoiceFormat("-1#NEGATIVE_ONE|0#ZERO|1#ONE|1<GREATER_THAN_ONE");
377994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("-1.0#NEGATIVE_ONE|0.0#ZERO|1.0#ONE|1.0<GREATER_THAN_ONE",
378994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				cf.toPattern());
379994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
380994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        MessageFormat mf = new MessageFormat("CHOICE {1,choice}");
381994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String ptrn = mf.toPattern();
382994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Unused message format returning incorrect pattern", "CHOICE {1,choice,}", ptrn
383994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				);
384994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
385994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String pattern = f1.toPattern();
386994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue(
387994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "Wrong pattern: " + pattern,
388994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                pattern
389994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                        .equals("0.0#Less than one|1.0#one|1.0<Between one and two|2.0<Greater than two"));
390994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
391994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        cf = new ChoiceFormat(
392994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "-1#is negative| 0#is zero or fraction | 1#is one |1.0<is 1+|2#is two |2<is more than 2.");
393994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        String str = "org.apache.harmony.tests.java.lang.share.MyResources2";
394994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        cf.applyPattern(str);
395994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ptrn = cf.toPattern();
396994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Return value should be empty string for invalid pattern",
397994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				0, ptrn.length());
398994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
399994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
400994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	/**
401994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	 * @tests java.text.ChoiceFormat#format(long)
402994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	 */
403994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_formatL() {
404994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		ChoiceFormat fmt = new ChoiceFormat(
405994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				"-1#NEGATIVE_ONE|0#ZERO|1#ONE|1<GREATER_THAN_ONE");
406994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
407994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("NEGATIVE_ONE", fmt.format(Long.MIN_VALUE));
408994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("NEGATIVE_ONE", fmt.format(-1));
409994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("ZERO", fmt.format(0));
410994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("ONE", fmt.format(1));
411994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("GREATER_THAN_ONE", fmt.format(Long.MAX_VALUE));
412994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
413994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
414994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	/**
415994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	 * @tests java.text.ChoiceFormat#format(double)
416994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	 */
417994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_formatD() {
418994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		ChoiceFormat fmt = new ChoiceFormat(
419994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes				"-1#NEGATIVE_ONE|0#ZERO|1#ONE|1<GREATER_THAN_ONE");
420994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("NEGATIVE_ONE", fmt.format(Double.NEGATIVE_INFINITY));
421994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("NEGATIVE_ONE", fmt.format(-999999999D));
422994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("NEGATIVE_ONE", fmt.format(-1.1));
423994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("NEGATIVE_ONE", fmt.format(-1.0));
424994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("NEGATIVE_ONE", fmt.format(-0.9));
425994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("ZERO", fmt.format(0.0));
426994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("ZERO", fmt.format(0.9));
427994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("ONE", fmt.format(1.0));
428994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("GREATER_THAN_ONE", fmt.format(1.1));
429994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("GREATER_THAN_ONE", fmt.format(999999999D));
430994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("GREATER_THAN_ONE", fmt.format(Double.POSITIVE_INFINITY));
431994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
432c10ba1bf470b9ae0d9904e28105de5e679840cb9Narayan Kamath
433c10ba1bf470b9ae0d9904e28105de5e679840cb9Narayan Kamath    // http://b/19149384
434c10ba1bf470b9ae0d9904e28105de5e679840cb9Narayan Kamath    public void testToPatternWithInfinities() {
435c10ba1bf470b9ae0d9904e28105de5e679840cb9Narayan Kamath        final ChoiceFormat fmt = new ChoiceFormat(
436c10ba1bf470b9ae0d9904e28105de5e679840cb9Narayan Kamath                "-\u221E<are negative|0<are fractions|1#is one|1.0<is 1+|\u221E<are many.");
437c10ba1bf470b9ae0d9904e28105de5e679840cb9Narayan Kamath        assertEquals("-\u221E<are negative|0.0<are fractions|1.0#is one|1.0<is 1+|\u221E<are many.",
438c10ba1bf470b9ae0d9904e28105de5e679840cb9Narayan Kamath                fmt.toPattern());
439c10ba1bf470b9ae0d9904e28105de5e679840cb9Narayan Kamath    }
440de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath
441de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath    // http://b/19011159
442de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath    public void testEscapedPatternWithConsecutiveQuotes() {
443de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath        ChoiceFormat format = new ChoiceFormat("0#1'2''3'''4''''.");
444de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath        String formatted = format.format(0);
445de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath        assertEquals("12'3'4''.", formatted);
446de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath
447de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath        format = new ChoiceFormat("0#1'2''3'''''4''''.");
448de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath        formatted = format.format(0);
449de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath        assertEquals("12'3''4''.", formatted);
450de75c0aa34c7db47ddec1704e94fa05c54687705Narayan Kamath    }
451994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes}
452