174473971cc9d960376295fbcc430320c9ed62991Elliott 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
874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes *
9994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
1074473971cc9d960376295fbcc430320c9ed62991Elliott 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.io.ByteArrayInputStream;
21994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.io.ByteArrayOutputStream;
22994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.io.File;
23994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.io.ObjectInputStream;
24994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.io.ObjectOutputStream;
25994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.net.URL;
26994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.DecimalFormat;
27994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.DecimalFormatSymbols;
28994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.NumberFormat;
29994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.Currency;
30994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.Locale;
31994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.ServiceConfigurationError;
32994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
33994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport junit.framework.TestCase;
34994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
35994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest;
36994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
37994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespublic class DecimalFormatSymbolsTest extends TestCase {
38994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
39994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    DecimalFormatSymbols dfs;
40994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
41994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    DecimalFormatSymbols dfsUS;
42994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
43994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
44994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#DecimalFormatSymbols()
45994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
46994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_Constructor() {
47994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Test for method java.text.DecimalFormatSymbols()
48994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Used in tests
49994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
50994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
51994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
52994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#DecimalFormatSymbols(java.util.Locale)
53994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
54994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_ConstructorLjava_util_Locale() {
55994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        DecimalFormatSymbols dfs = new DecimalFormatSymbols(new Locale("en",
56994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "us"));
57994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect symbols", '%', dfs.getPercent());
58994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
59994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
60994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
61994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
62994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getAvailableLocales()
63994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
64994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getAvailableLocales_no_provider() throws Exception {
65994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Locale[] locales = DecimalFormatSymbols.getAvailableLocales();
66994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertNotNull(locales);
67994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // must contain Locale.US
68994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        boolean flag = false;
69994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        for (Locale locale : locales) {
70994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            if (locale.equals(Locale.US)) {
71994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                flag = true;
72994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                break;
73994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            }
74994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        }
75994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue(flag);
76994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
77994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
78994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
79994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getInstance()
80994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
81994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getInstance() {
82994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals(new DecimalFormatSymbols(), DecimalFormatSymbols.getInstance());
83994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals(new DecimalFormatSymbols(Locale.getDefault()),
84994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                DecimalFormatSymbols.getInstance());
8574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes
86994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertNotSame(DecimalFormatSymbols.getInstance(), DecimalFormatSymbols.getInstance());
87994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
88994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
89994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getInstanceLjava_util_Locale() {
90994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        try {
91994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            DecimalFormatSymbols.getInstance(null);
9274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes            fail();
9374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes        } catch (NullPointerException expected) {
94994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        }
95994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
9674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes        assertEquals(new DecimalFormatSymbols(Locale.GERMANY), DecimalFormatSymbols.getInstance(Locale.GERMANY));
97994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
98994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Locale locale = new Locale("not exist language", "not exist country");
99994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
100994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertNotNull(symbols);
101994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
102994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
103994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
104994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#equals(java.lang.Object)
105994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
106994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_equalsLjava_lang_Object() {
107994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Equal objects returned false", dfs.equals(dfs.clone()));
108994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setDigit('B');
109994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Un-Equal objects returned true", !dfs
110994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .equals(new DecimalFormatSymbols()));
111994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
112994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
113994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
114994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
115994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getCurrency()
116994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
117994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getCurrency() {
118994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Currency currency = Currency.getInstance("USD");
119994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect currency",
120994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfsUS.getCurrency(), currency);
121994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
122994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Currency currK = Currency.getInstance("KRW");
123994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Currency currX = Currency.getInstance("XXX");
124994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Currency currE = Currency.getInstance("EUR");
125994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Currency currF = Currency.getInstance("FRF");
126994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
127994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        DecimalFormatSymbols dfs1 = new DecimalFormatSymbols(new Locale("ko",
128994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "KR"));
129994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Test1: Returned incorrect currency",
130994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfs1.getCurrency() == currK);
131994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Test1: Returned incorrect currencySymbol", "\u20a9", dfs1
132994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getCurrencySymbol());
133994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Test1: Returned incorrect intlCurrencySymbol", "KRW",
134994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfs1.getInternationalCurrencySymbol());
135994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
136994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs1 = new DecimalFormatSymbols(new Locale("", "KR"));
137994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Test2: Returned incorrect currency",
138994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfs1.getCurrency() == currK);
139994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Test2: Returned incorrect currencySymbol", "\u20a9", dfs1
140994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getCurrencySymbol());
141994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Test2: Returned incorrect intlCurrencySymbol", "KRW",
142994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfs1.getInternationalCurrencySymbol());
143994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
144994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs1 = new DecimalFormatSymbols(new Locale("ko", ""));
145994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Test3: Returned incorrect currency",
146994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfs1.getCurrency() == currX);
147994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Test3: Returned incorrect currencySymbol", "\u00a4", dfs1
148994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getCurrencySymbol());
149994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Test3: Returned incorrect intlCurrencySymbol", "XXX",
150994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfs1.getInternationalCurrencySymbol());
151994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
152994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs1 = new DecimalFormatSymbols(new Locale("fr", "FR"));
153994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Test4: Returned incorrect currency",
154994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfs1.getCurrency() == currE);
155994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Test4: Returned incorrect currencySymbol", "\u20ac", dfs1
156994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getCurrencySymbol());
157994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Test4: Returned incorrect intlCurrencySymbol", "EUR",
158994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfs1.getInternationalCurrencySymbol());
159994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
160994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // RI fails these tests since it doesn't have the PREEURO variant
161994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // dfs1 = new DecimalFormatSymbols(new Locale("fr", "FR","PREEURO"));
162994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // assertTrue("Test5: Returned incorrect currency", dfs1.getCurrency()
163994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // == currF);
164994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // assertTrue("Test5: Returned incorrect currencySymbol",
165994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // dfs1.getCurrencySymbol().equals("F"));
166994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // assertTrue("Test5: Returned incorrect intlCurrencySymbol",
167994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // dfs1.getInternationalCurrencySymbol().equals("FRF"));
168994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
169994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
170994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
171994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getCurrencySymbol()
172994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
173994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getCurrencySymbol() {
174994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect currencySymbol", "$", dfsUS
175994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getCurrencySymbol());
176994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
177994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
178994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
179994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getDecimalSeparator()
180994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
181994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getDecimalSeparator() {
182994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setDecimalSeparator('*');
183994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect DecimalSeparator symbol", '*', dfs
184994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getDecimalSeparator());
185994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
186994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
187994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
188994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getDigit()
189994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
190994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getDigit() {
191994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setDigit('*');
192994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect Digit symbol", '*', dfs.getDigit());
193994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
194994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
195994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
196994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getExponentSeparator()
197994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
198994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getExponentSeparator() {
199994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setExponentSeparator("EE");
200994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect Exponent Separator symbol", "EE", dfs
201994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getExponentSeparator());
202994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
203994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
204994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
205994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getGroupingSeparator()
206994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
207994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getGroupingSeparator() {
208994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setGroupingSeparator('*');
209994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect GroupingSeparator symbol", '*', dfs
210994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getGroupingSeparator());
211994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
212994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
213994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
214994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getInfinity()
215994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
216994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getInfinity() {
217994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setInfinity("&");
218994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Returned incorrect Infinity symbol",
219994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfs.getInfinity() == "&");
220994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
221994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
222994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
223994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getInternationalCurrencySymbol()
224994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
225994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getInternationalCurrencySymbol() {
226994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect InternationalCurrencySymbol", "USD",
227994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfsUS.getInternationalCurrencySymbol());
228994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
229994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
230994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
231994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getMinusSign()
232994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
233994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getMinusSign() {
234994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setMinusSign('&');
235994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect MinusSign symbol", '&', dfs
236994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getMinusSign());
237994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
238994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
239994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
240994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getNaN()
241994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
242994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getNaN() {
243994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setNaN("NAN!!");
244994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect nan symbol", "NAN!!", dfs.getNaN());
245994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
246994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
247994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
248994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getPatternSeparator()
249994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
250994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getPatternSeparator() {
251994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setPatternSeparator('X');
252994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect PatternSeparator symbol", 'X', dfs
253994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getPatternSeparator());
254994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
255994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
256994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
257994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getPercent()
258994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
259994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getPercent() {
260994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setPercent('*');
261994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect Percent symbol", '*', dfs.getPercent());
262994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
263994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
264994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
265994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getPerMill()
266994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
267994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getPerMill() {
268994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setPerMill('#');
269994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect PerMill symbol", '#', dfs.getPerMill());
270994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
271994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
272994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
273994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getZeroDigit()
274994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
275994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_getZeroDigit() {
276994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setZeroDigit('*');
277994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect ZeroDigit symbol", '*', dfs
278994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getZeroDigit());
279994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
280994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
281994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
282994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setCurrency(java.util.Currency)
283994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
284994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setCurrencyLjava_util_Currency() {
285994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Locale locale = Locale.CANADA;
286994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        DecimalFormatSymbols dfs = ((DecimalFormat) NumberFormat
287994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getCurrencyInstance(locale)).getDecimalFormatSymbols();
288994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
289994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        try {
290994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            dfs.setCurrency(null);
291994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            fail("Expected NullPointerException");
292994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        } catch (NullPointerException e) {
293994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        }
294994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
295994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Currency currency = Currency.getInstance("JPY");
296994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setCurrency(currency);
297994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
298994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Returned incorrect currency", currency == dfs.getCurrency());
299994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect currency symbol", currency.getSymbol(
300994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                locale), dfs.getCurrencySymbol());
301994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Returned incorrect international currency symbol", currency
302994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getCurrencyCode().equals(dfs.getInternationalCurrencySymbol()));
303994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
304994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
305994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
306994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setDecimalSeparator(char)
307994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
308994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setDecimalSeparatorC() {
309994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setDecimalSeparator('*');
310994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect DecimalSeparator symbol", '*', dfs
311994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getDecimalSeparator());
312994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
313994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
314994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
315994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setDigit(char)
316994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
317994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setDigitC() {
318994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setDigit('*');
319994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect Digit symbol", '*', dfs.getDigit());
320994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
321994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
322994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
323994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setExponentSeparator(String)
324994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
325994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setExponentSeparator() {
326994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        try {
327994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            dfs.setExponentSeparator(null);
328994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            fail("Should throw NullPointerException");
329994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        } catch (NullPointerException e) {
330994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            // expected
331994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        }
332994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
333994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setExponentSeparator("");
334994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect Exponent Separator symbol", "", dfs
335994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getExponentSeparator());
336994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
337994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setExponentSeparator("what ever you want");
338994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect Exponent Separator symbol",
339994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "what ever you want", dfs.getExponentSeparator());
340994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
341994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setExponentSeparator(" E ");
342994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect Exponent Separator symbol", " E ", dfs
343994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getExponentSeparator());
344994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
345994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
346994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
347994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setGroupingSeparator(char)
348994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
349994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setGroupingSeparatorC() {
350994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setGroupingSeparator('*');
351994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect GroupingSeparator symbol", '*', dfs
352994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getGroupingSeparator());
353994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
354994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
355994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
356994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setInfinity(java.lang.String)
357994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
358994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setInfinityLjava_lang_String() {
359994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setInfinity("&");
360994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Returned incorrect Infinity symbol",
361994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dfs.getInfinity() == "&");
362994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
363994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
364994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
365994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setInternationalCurrencySymbol(java.lang.String)
366994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
367994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setInternationalCurrencySymbolLjava_lang_String() {
368994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Locale locale = Locale.CANADA;
369994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        DecimalFormatSymbols dfs = ((DecimalFormat) NumberFormat
370994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getCurrencyInstance(locale)).getDecimalFormatSymbols();
371994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Currency currency = Currency.getInstance("JPY");
372994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setInternationalCurrencySymbol(currency.getCurrencyCode());
373994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
374994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Test1: Returned incorrect currency", currency == dfs
375994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getCurrency());
376994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Test1: Returned incorrect currency symbol", currency
377994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getSymbol(locale), dfs.getCurrencySymbol());
378994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertTrue("Test1: Returned incorrect international currency symbol",
379994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                currency.getCurrencyCode().equals(
380994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                        dfs.getInternationalCurrencySymbol()));
381994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
382994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setInternationalCurrencySymbol("bogus");
383994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // RI support this legacy country code
384994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // assertNotNull("Test2: Returned incorrect currency", dfs.getCurrency());
385994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Test2: Returned incorrect international currency symbol",
386994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                "bogus", dfs.getInternationalCurrencySymbol());
387994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
388994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
389994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
390994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setMinusSign(char)
391994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
392994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setMinusSignC() {
393994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setMinusSign('&');
394994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect MinusSign symbol", '&', dfs
395994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getMinusSign());
396994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
397994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
398994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
399994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setNaN(java.lang.String)
400994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
401994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setNaNLjava_lang_String() {
402994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setNaN("NAN!!");
403994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect nan symbol", "NAN!!", dfs.getNaN());
404994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
405994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
406994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
407994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setPatternSeparator(char)
408994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
409994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setPatternSeparatorC() {
410994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setPatternSeparator('X');
411994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect PatternSeparator symbol", 'X', dfs
412994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .getPatternSeparator());
413994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
414994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
415994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
416994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setPercent(char)
417994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
418994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setPercentC() {
419994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setPercent('*');
420994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect Percent symbol", '*', dfs.getPercent());
421994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
422994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
423994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
424994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setPerMill(char)
425994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
426994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setPerMillC() {
427994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setPerMill('#');
428994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Returned incorrect PerMill symbol", '#', dfs.getPerMill());
429994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
430994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
431994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
432994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setZeroDigit(char)
433994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
434994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_setZeroDigitC() {
435994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs.setZeroDigit('*');
436994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("Set incorrect ZeroDigit symbol", '*', dfs.getZeroDigit());
437994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
438994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
439994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
440994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * Sets up the fixture, for example, open a network connection. This method
441994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * is called before a test is executed.
442994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
443994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    protected void setUp() {
444994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfs = new DecimalFormatSymbols();
445994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        dfsUS = new DecimalFormatSymbols(new Locale("en", "us"));
446994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
447994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
448994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
449994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * Tears down the fixture, for example, close a network connection. This
450994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * method is called after a test is executed.
451994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
452994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    protected void tearDown() {
453994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
454994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
455994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    // Test serialization mechanism of DecimalFormatSymbols
456994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_serialization() throws Exception {
457994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.FRANCE);
458994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        Currency currency = symbols.getCurrency();
459994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertNotNull(currency);
460994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
461994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // serialize
462994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ByteArrayOutputStream byteOStream = new ByteArrayOutputStream();
463994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ObjectOutputStream objectOStream = new ObjectOutputStream(byteOStream);
464994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        objectOStream.writeObject(symbols);
465994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
466994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // and deserialize
467994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ObjectInputStream objectIStream = new ObjectInputStream(
468994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                new ByteArrayInputStream(byteOStream.toByteArray()));
469994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        DecimalFormatSymbols symbolsD = (DecimalFormatSymbols) objectIStream
470994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                .readObject();
471994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
472994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // The associated currency will not persist
473994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        currency = symbolsD.getCurrency();
474994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertNotNull(currency);
475994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
476994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
477994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
478994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * Assert that Harmony can correct read an instance that was created by
479994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * the Java 1.5 RI. The actual values may differ on Harmony and other JREs,
480994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * so we only assert the values that are known to be in the serialized data.
481994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
482994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_RIHarmony_compatible() throws Exception {
483994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        DecimalFormatSymbols dfs;
484994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ObjectInputStream i = null;
485994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        try {
486994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            i = new ObjectInputStream(getClass().getClassLoader().getResourceAsStream(
487e5fea3d504609d22337a5311d3ce0e72314bceeeNarayan Kamath                    "serialization/org/apache/harmony/tests/java/text/DecimalFormatSymbols.ser"));
488994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            dfs = (DecimalFormatSymbols) i.readObject();
489994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        } finally {
490994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            try {
491994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                if (i != null) {
492994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                    i.close();
493994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                }
494994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            } catch (Exception e) {
495994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            }
496994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        }
497994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertDecimalFormatSymbolsRIFrance(dfs);
498994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
49974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes
500994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    static void assertDecimalFormatSymbolsRIFrance(DecimalFormatSymbols dfs) {
501994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Values based on Java 1.5 RI DecimalFormatSymbols for Locale.FRANCE
502994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        /*
503994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * currency = [EUR]
504994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * currencySymbol = [€][U+20ac]
505994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * decimalSeparator = [,][U+002c]
506994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * digit = [#][U+0023]
507994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * groupingSeparator = [ ][U+00a0]
508994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * infinity = [∞][U+221e]
509994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * internationalCurrencySymbol = [EUR]
510994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * minusSign = [-][U+002d]
511994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * monetaryDecimalSeparator = [,][U+002c]
512994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * naN = [�][U+fffd]
513994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * patternSeparator = [;][U+003b]
514994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * perMill = [‰][U+2030]
515994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * percent = [%][U+0025]
516994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         * zeroDigit = [0][U+0030]
517994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes         */
518994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("EUR", dfs.getCurrency().getCurrencyCode());
519994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("\u20AC", dfs.getCurrencySymbol());
520994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals(',', dfs.getDecimalSeparator());
521994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals('#', dfs.getDigit());
522994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals('\u00a0', dfs.getGroupingSeparator());
523994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("\u221e", dfs.getInfinity());
524994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("EUR", dfs.getInternationalCurrencySymbol());
525994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals('-', dfs.getMinusSign());
526994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals(',', dfs.getMonetaryDecimalSeparator());
527994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // RI's default NaN is U+FFFD, Harmony's is based on ICU
528994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals("\uFFFD", dfs.getNaN());
529994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals('\u003b', dfs.getPatternSeparator());
530994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals('\u2030', dfs.getPerMill());
531994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals('%', dfs.getPercent());
532994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        assertEquals('0', dfs.getZeroDigit());
533994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
534994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
535994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
536994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests serialization/deserialization compatibility with RI6.
537994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
538994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void testSerializationCompatibility() throws Exception {
539994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US);
540994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        symbols.setExponentSeparator("EE");
541994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        symbols.setNaN("NaN");
542994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        SerializationTest.verifyGolden(this, symbols);
543994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
54474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes
545994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
546994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests serialization/deserialization compatibility.
547994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
548994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void testSerializationSelf() throws Exception {
549994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.ITALIAN);
550994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        SerializationTest.verifySelf(symbols);
551994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
552994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes}
553