1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.text.tests.java.text;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectInputStream;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectOutputStream;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URL;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.DecimalFormat;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.DecimalFormatSymbols;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.NumberFormat;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Currency;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Locale;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ServiceConfigurationError;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.text.tests.java.text.MockedDecimalFormatSymbolsProvider.MockedDecimalFormatSymbols;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class DecimalFormatSymbolsTest extends TestCase {
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    DecimalFormatSymbols dfs;
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    DecimalFormatSymbols dfsUS;
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#DecimalFormatSymbols()
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_Constructor() {
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.text.DecimalFormatSymbols()
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Used in tests
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#DecimalFormatSymbols(java.util.Locale)
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_util_Locale() {
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols dfs = new DecimalFormatSymbols(new Locale("en",
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "us"));
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect symbols", '%', dfs.getPercent());
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getAvailableLocales()
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getAvailableLocales_no_provider() throws Exception {
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Locale[] locales = DecimalFormatSymbols.getAvailableLocales();
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(locales);
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // must contain Locale.US
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean flag = false;
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (Locale locale : locales) {
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (locale.equals(Locale.US)) {
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                flag = true;
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                break;
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(flag);
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getAvailableLocales()
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getAvailableLocales_correct_provider() throws Exception {
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL path1 = new File("src/test/resources/provider/correct").toURL();
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL path2 = new File("resources/provider/correct").toURL();
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        LoadLocaleProviderTestHelper helper = new LoadLocaleProviderTestHelper(
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new URL[] { path1, path2 }) {
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            @Override
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public void test() {
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Locale[] locales = DecimalFormatSymbols.getAvailableLocales();
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNotNull(locales);
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // must contain mock Locale
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                boolean flag = false;
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (Locale locale : locales) {
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (locale.getLanguage().equals("mock")) {
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        flag = true;
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        break;
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(flag);
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (helper.getThrowable() != null) {
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throw new Exception(helper.getThrowable());
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getAvailableLocales()
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getAvailableLocales_wrong_provider() throws Exception {
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL path1 = new File("src/test/resources/provider/wrong").toURL();
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL path2 = new File("resources/provider/wrong").toURL();
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        LoadLocaleProviderTestHelper helper = new LoadLocaleProviderTestHelper(
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new URL[] { path1, path2 }) {
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            @Override
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public void test() {
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    DecimalFormatSymbols.getAvailableLocales();
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("Should throw ServiceConfigurationError");
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (ServiceConfigurationError e) {
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // expected
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (helper.getThrowable() != null) {
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throw new Exception(helper.getThrowable());
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getInstance()
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getInstance() {
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new DecimalFormatSymbols(), DecimalFormatSymbols.getInstance());
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new DecimalFormatSymbols(Locale.getDefault()),
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DecimalFormatSymbols.getInstance());
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotSame(DecimalFormatSymbols.getInstance(), DecimalFormatSymbols.getInstance());
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getInstance(Locale)
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getInstanceLjava_util_Locale() {
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            DecimalFormatSymbols.getInstance(null);
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NullPointerException");
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new DecimalFormatSymbols(Locale.GERMANY), DecimalFormatSymbols
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getInstance(Locale.GERMANY));
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Locale locale = new Locale("not exist language", "not exist country");
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(symbols);
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(DecimalFormatSymbols.getInstance(), symbols);
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getInstance(Locale)
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getInstanceLjava_util_Locale_no_provider() {
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            DecimalFormatSymbols.getInstance(null);
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NullPointerException");
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new DecimalFormatSymbols(Locale.GERMANY), DecimalFormatSymbols
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getInstance(Locale.GERMANY));
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Locale locale = new Locale("not exist language", "not exist country");
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(symbols);
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(DecimalFormatSymbols.getInstance(), symbols);
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getInstance(Locale)
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getInstanceLjava_util_Locale_correct_provider()
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throws Exception {
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL path1 = new File("src/test/resources/provider/correct").toURL();
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL path2 = new File("resources/provider/correct").toURL();
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        LoadLocaleProviderTestHelper helper = new LoadLocaleProviderTestHelper(
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new URL[] { path1, path2 }) {
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            @Override
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public void test() {
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DecimalFormatSymbols symbols = DecimalFormatSymbols
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .getInstance(new Locale("Mock"));
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(symbols instanceof MockedDecimalFormatSymbols);
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (helper.getThrowable() != null) {
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throw new Exception(helper.getThrowable());
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getInstance(Locale)
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getInstanceLjava_util_Locale_wrong_provider()
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throws Exception {
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL path1 = new File("src/test/resources/provider/wrong").toURL();
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL path2 = new File("resources/provider/wrong").toURL();
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        LoadLocaleProviderTestHelper helper = new LoadLocaleProviderTestHelper(
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new URL[] { path1, path2 }) {
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            @Override
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public void test() {
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    DecimalFormatSymbols symbols = DecimalFormatSymbols
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getInstance(new Locale("Mock"));
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("Should throw ServiceConfigurationError");
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (ServiceConfigurationError e) {
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // expected
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (helper.getThrowable() != null) {
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throw new Exception(helper.getThrowable());
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#equals(java.lang.Object)
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_equalsLjava_lang_Object() {
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Equal objects returned false", dfs.equals(dfs.clone()));
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setDigit('B');
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Un-Equal objects returned true", !dfs
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(new DecimalFormatSymbols()));
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getCurrency()
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getCurrency() {
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Currency currency = Currency.getInstance("USD");
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect currency",
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfsUS.getCurrency(), currency);
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Currency currK = Currency.getInstance("KRW");
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Currency currX = Currency.getInstance("XXX");
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Currency currE = Currency.getInstance("EUR");
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Currency currF = Currency.getInstance("FRF");
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols dfs1 = new DecimalFormatSymbols(new Locale("ko",
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "KR"));
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Test1: Returned incorrect currency",
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfs1.getCurrency() == currK);
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test1: Returned incorrect currencySymbol", "\u20a9", dfs1
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCurrencySymbol());
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test1: Returned incorrect intlCurrencySymbol", "KRW",
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfs1.getInternationalCurrencySymbol());
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs1 = new DecimalFormatSymbols(new Locale("", "KR"));
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Test2: Returned incorrect currency",
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfs1.getCurrency() == currK);
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test2: Returned incorrect currencySymbol", "\u20a9", dfs1
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCurrencySymbol());
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test2: Returned incorrect intlCurrencySymbol", "KRW",
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfs1.getInternationalCurrencySymbol());
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs1 = new DecimalFormatSymbols(new Locale("ko", ""));
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Test3: Returned incorrect currency",
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfs1.getCurrency() == currX);
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test3: Returned incorrect currencySymbol", "\u00a4", dfs1
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCurrencySymbol());
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test3: Returned incorrect intlCurrencySymbol", "XXX",
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfs1.getInternationalCurrencySymbol());
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs1 = new DecimalFormatSymbols(new Locale("fr", "FR"));
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Test4: Returned incorrect currency",
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfs1.getCurrency() == currE);
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test4: Returned incorrect currencySymbol", "\u20ac", dfs1
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCurrencySymbol());
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test4: Returned incorrect intlCurrencySymbol", "EUR",
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfs1.getInternationalCurrencySymbol());
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // RI fails these tests since it doesn't have the PREEURO variant
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // dfs1 = new DecimalFormatSymbols(new Locale("fr", "FR","PREEURO"));
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // assertTrue("Test5: Returned incorrect currency", dfs1.getCurrency()
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // == currF);
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // assertTrue("Test5: Returned incorrect currencySymbol",
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // dfs1.getCurrencySymbol().equals("F"));
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // assertTrue("Test5: Returned incorrect intlCurrencySymbol",
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // dfs1.getInternationalCurrencySymbol().equals("FRF"));
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getCurrencySymbol()
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getCurrencySymbol() {
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect currencySymbol", "$", dfsUS
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCurrencySymbol());
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getDecimalSeparator()
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getDecimalSeparator() {
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setDecimalSeparator('*');
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect DecimalSeparator symbol", '*', dfs
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getDecimalSeparator());
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getDigit()
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getDigit() {
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setDigit('*');
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect Digit symbol", '*', dfs.getDigit());
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getExponentSeparator()
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getExponentSeparator() {
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setExponentSeparator("EE");
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect Exponent Separator symbol", "EE", dfs
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getExponentSeparator());
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getGroupingSeparator()
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getGroupingSeparator() {
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setGroupingSeparator('*');
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect GroupingSeparator symbol", '*', dfs
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getGroupingSeparator());
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getInfinity()
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getInfinity() {
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setInfinity("&");
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Returned incorrect Infinity symbol",
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfs.getInfinity() == "&");
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getInternationalCurrencySymbol()
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getInternationalCurrencySymbol() {
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect InternationalCurrencySymbol", "USD",
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfsUS.getInternationalCurrencySymbol());
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getMinusSign()
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getMinusSign() {
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setMinusSign('&');
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect MinusSign symbol", '&', dfs
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getMinusSign());
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getNaN()
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getNaN() {
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setNaN("NAN!!");
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect nan symbol", "NAN!!", dfs.getNaN());
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getPatternSeparator()
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getPatternSeparator() {
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setPatternSeparator('X');
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect PatternSeparator symbol", 'X', dfs
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getPatternSeparator());
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getPercent()
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getPercent() {
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setPercent('*');
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect Percent symbol", '*', dfs.getPercent());
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getPerMill()
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getPerMill() {
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setPerMill('#');
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect PerMill symbol", '#', dfs.getPerMill());
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#getZeroDigit()
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getZeroDigit() {
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setZeroDigit('*');
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect ZeroDigit symbol", '*', dfs
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getZeroDigit());
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setCurrency(java.util.Currency)
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setCurrencyLjava_util_Currency() {
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Locale locale = Locale.CANADA;
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols dfs = ((DecimalFormat) NumberFormat
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCurrencyInstance(locale)).getDecimalFormatSymbols();
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dfs.setCurrency(null);
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Expected NullPointerException");
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Currency currency = Currency.getInstance("JPY");
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setCurrency(currency);
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Returned incorrect currency", currency == dfs.getCurrency());
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect currency symbol", currency.getSymbol(
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                locale), dfs.getCurrencySymbol());
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Returned incorrect international currency symbol", currency
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCurrencyCode().equals(dfs.getInternationalCurrencySymbol()));
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setDecimalSeparator(char)
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setDecimalSeparatorC() {
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setDecimalSeparator('*');
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect DecimalSeparator symbol", '*', dfs
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getDecimalSeparator());
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setDigit(char)
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setDigitC() {
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setDigit('*');
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect Digit symbol", '*', dfs.getDigit());
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setExponentSeparator(String)
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setExponentSeparator() {
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dfs.setExponentSeparator(null);
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NullPointerException");
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setExponentSeparator("");
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect Exponent Separator symbol", "", dfs
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getExponentSeparator());
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setExponentSeparator("what ever you want");
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect Exponent Separator symbol",
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "what ever you want", dfs.getExponentSeparator());
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setExponentSeparator(" E ");
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect Exponent Separator symbol", " E ", dfs
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getExponentSeparator());
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setGroupingSeparator(char)
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setGroupingSeparatorC() {
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setGroupingSeparator('*');
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect GroupingSeparator symbol", '*', dfs
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getGroupingSeparator());
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setInfinity(java.lang.String)
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setInfinityLjava_lang_String() {
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setInfinity("&");
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Returned incorrect Infinity symbol",
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dfs.getInfinity() == "&");
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setInternationalCurrencySymbol(java.lang.String)
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setInternationalCurrencySymbolLjava_lang_String() {
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Locale locale = Locale.CANADA;
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols dfs = ((DecimalFormat) NumberFormat
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCurrencyInstance(locale)).getDecimalFormatSymbols();
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Currency currency = Currency.getInstance("JPY");
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setInternationalCurrencySymbol(currency.getCurrencyCode());
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Test1: Returned incorrect currency", currency == dfs
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCurrency());
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test1: Returned incorrect currency symbol", currency
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getSymbol(locale), dfs.getCurrencySymbol());
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Test1: Returned incorrect international currency symbol",
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                currency.getCurrencyCode().equals(
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        dfs.getInternationalCurrencySymbol()));
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setInternationalCurrencySymbol("bogus");
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // RI support this legacy country code
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // assertNotNull("Test2: Returned incorrect currency", dfs.getCurrency());
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test2: Returned incorrect international currency symbol",
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "bogus", dfs.getInternationalCurrencySymbol());
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setMinusSign(char)
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setMinusSignC() {
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setMinusSign('&');
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect MinusSign symbol", '&', dfs
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getMinusSign());
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setNaN(java.lang.String)
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setNaNLjava_lang_String() {
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setNaN("NAN!!");
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect nan symbol", "NAN!!", dfs.getNaN());
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setPatternSeparator(char)
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setPatternSeparatorC() {
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setPatternSeparator('X');
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect PatternSeparator symbol", 'X', dfs
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getPatternSeparator());
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setPercent(char)
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setPercentC() {
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setPercent('*');
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect Percent symbol", '*', dfs.getPercent());
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setPerMill(char)
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setPerMillC() {
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setPerMill('#');
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect PerMill symbol", '#', dfs.getPerMill());
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.DecimalFormatSymbols#setZeroDigit(char)
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setZeroDigitC() {
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs.setZeroDigit('*');
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Set incorrect ZeroDigit symbol", '*', dfs.getZeroDigit());
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Sets up the fixture, for example, open a network connection. This method
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * is called before a test is executed.
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void setUp() {
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfs = new DecimalFormatSymbols();
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dfsUS = new DecimalFormatSymbols(new Locale("en", "us"));
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tears down the fixture, for example, close a network connection. This
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method is called after a test is executed.
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void tearDown() {
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // Test serialization mechanism of DecimalFormatSymbols
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_serialization() throws Exception {
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.FRANCE);
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Currency currency = symbols.getCurrency();
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(currency);
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // serialize
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayOutputStream byteOStream = new ByteArrayOutputStream();
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ObjectOutputStream objectOStream = new ObjectOutputStream(byteOStream);
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        objectOStream.writeObject(symbols);
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // and deserialize
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ObjectInputStream objectIStream = new ObjectInputStream(
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ByteArrayInputStream(byteOStream.toByteArray()));
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols symbolsD = (DecimalFormatSymbols) objectIStream
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .readObject();
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // The associated currency will not persist
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        currency = symbolsD.getCurrency();
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(currency);
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assert that Harmony can correct read an instance that was created by
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * the Java 1.5 RI. The actual values may differ on Harmony and other JREs,
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * so we only assert the values that are known to be in the serialized data.
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_RIHarmony_compatible() throws Exception {
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols dfs;
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ObjectInputStream i = null;
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            i = new ObjectInputStream(getClass().getClassLoader().getResourceAsStream(
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "/serialization/java/text/DecimalFormatSymbols.ser"));
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dfs = (DecimalFormatSymbols) i.readObject();
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (i != null) {
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    i.close();
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (Exception e) {
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertDecimalFormatSymbolsRIFrance(dfs);
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static void assertDecimalFormatSymbolsRIFrance(DecimalFormatSymbols dfs) {
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Values based on Java 1.5 RI DecimalFormatSymbols for Locale.FRANCE
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /*
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * currency = [EUR]
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * currencySymbol = [€][U+20ac]
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * decimalSeparator = [,][U+002c]
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * digit = [#][U+0023]
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * groupingSeparator = [ ][U+00a0]
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * infinity = [∞][U+221e]
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * internationalCurrencySymbol = [EUR]
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * minusSign = [-][U+002d]
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * monetaryDecimalSeparator = [,][U+002c]
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * naN = [�][U+fffd]
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * patternSeparator = [;][U+003b]
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * perMill = [‰][U+2030]
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * percent = [%][U+0025]
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * zeroDigit = [0][U+0030]
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("EUR", dfs.getCurrency().getCurrencyCode());
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("\u20AC", dfs.getCurrencySymbol());
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(',', dfs.getDecimalSeparator());
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals('#', dfs.getDigit());
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals('\u00a0', dfs.getGroupingSeparator());
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("\u221e", dfs.getInfinity());
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("EUR", dfs.getInternationalCurrencySymbol());
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals('-', dfs.getMinusSign());
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(',', dfs.getMonetaryDecimalSeparator());
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // RI's default NaN is U+FFFD, Harmony's is based on ICU
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("\uFFFD", dfs.getNaN());
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals('\u003b', dfs.getPatternSeparator());
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals('\u2030', dfs.getPerMill());
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals('%', dfs.getPercent());
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals('0', dfs.getZeroDigit());
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serialization/deserialization compatibility with RI6.
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSerializationCompatibility() throws Exception {
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US);
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        symbols.setExponentSeparator("EE");
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        symbols.setNaN("NaN");
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SerializationTest.verifyGolden(this, symbols);
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serialization/deserialization compatibility.
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSerializationSelf() throws Exception {
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.ITALIAN);
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SerializationTest.verifySelf(symbols);
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
683