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.IOException;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectInputStream;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectOutputStream;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.ChoiceFormat;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.DateFormat;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.FieldPosition;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.Format;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.MessageFormat;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.NumberFormat;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.ParseException;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.ParsePosition;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.text.SimpleDateFormat;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Calendar;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Date;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.GregorianCalendar;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Locale;
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TimeZone;
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class MessageFormatTest extends TestCase {
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private MessageFormat format1, format2, format3;
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private Locale defaultLocale;
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private void checkSerialization(MessageFormat format) {
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ByteArrayOutputStream ba = new ByteArrayOutputStream();
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ObjectOutputStream out = new ObjectOutputStream(ba);
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            out.writeObject(format);
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            out.close();
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ObjectInputStream in = new ObjectInputStream(
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    new ByteArrayInputStream(ba.toByteArray()));
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            MessageFormat read = (MessageFormat) in.readObject();
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Not equal: " + format.toPattern(), format.equals(read));
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Format: " + format.toPattern()
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + " caused IOException: " + e);
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ClassNotFoundException e) {
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Format: " + format.toPattern()
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + " caused ClassNotFoundException: " + e);
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#MessageFormat(java.lang.String,
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *        java.util.Locale)
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_lang_StringLjava_util_Locale() {
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.text.MessageFormat(java.lang.String,
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // java.util.Locale)
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Locale mk = new Locale("mk", "MK");
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat format = new MessageFormat(
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "Date: {0,date} Currency: {1, number, currency} Integer: {2, number, integer}",
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                mk);
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong locale1", format.getLocale().equals(mk));
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong locale2", format.getFormats()[0].equals(DateFormat
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getDateInstance(DateFormat.DEFAULT, mk)));
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong locale3", format.getFormats()[1].equals(NumberFormat
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCurrencyInstance(mk)));
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong locale4", format.getFormats()[2].equals(NumberFormat
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getIntegerInstance(mk)));
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#MessageFormat(java.lang.String)
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_lang_String() {
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.text.MessageFormat(java.lang.String)
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat format = new MessageFormat(
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "abc {4,time} def {3,date} ghi {2,number} jkl {1,choice,0#low|1#high} mnop {0}");
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Not a MessageFormat",
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                format.getClass() == MessageFormat.class);
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] formats = format.getFormats();
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNotNull("null formats", formats);
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong format count: " + formats.length, formats.length >= 5);
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong time format", formats[0].equals(DateFormat
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getTimeInstance()));
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong date format", formats[1].equals(DateFormat
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getDateInstance()));
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong number format", formats[2].equals(NumberFormat
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getInstance()));
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong choice format", formats[3].equals(new ChoiceFormat(
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "0.0#low|1.0#high")));
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull("Wrong string format", formats[4]);
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date = new Date();
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FieldPosition pos = new FieldPosition(-1);
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        StringBuffer buffer = new StringBuffer();
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.format(new Object[] { "123", new Double(1.6), new Double(7.2),
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                date, date }, buffer, pos);
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String result = buffer.toString();
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffer.setLength(0);
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffer.append("abc ");
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffer.append(DateFormat.getTimeInstance().format(date));
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffer.append(" def ");
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffer.append(DateFormat.getDateInstance().format(date));
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffer.append(" ghi ");
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffer.append(NumberFormat.getInstance().format(new Double(7.2)));
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffer.append(" jkl high mnop 123");
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong answer:\n" + result + "\n" + buffer, result
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(buffer.toString()));
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Simple string", "Test message", new MessageFormat("Test message").format(
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Object[0]));
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        result = new MessageFormat("Don't").format(new Object[0]);
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Should not throw IllegalArgumentException: " + result,
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "Dont".equals(result));
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new MessageFormat("Invalid {1,foobar} format descriptor!");
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Expected test_ConstructorLjava_lang_String to throw IAE.");
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException ex) {
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new MessageFormat(
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "Invalid {1,date,invalid-spec} format descriptor!");
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException ex) {
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkSerialization(new MessageFormat(""));
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkSerialization(new MessageFormat("noargs"));
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkSerialization(new MessageFormat("{0}"));
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkSerialization(new MessageFormat("a{0}"));
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkSerialization(new MessageFormat("{0}b"));
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        checkSerialization(new MessageFormat("a{0}b"));
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-65
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new MessageFormat("{0,number,integer");
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Assert 0: Failed to detect unmatched brackets.");
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#applyPattern(java.lang.String)
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_applyPatternLjava_lang_String() {
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method void
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // java.text.MessageFormat.applyPattern(java.lang.String)
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat format = new MessageFormat("test");
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("xx {0}");
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Invalid number", "xx 46", format.format(
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Object[] { new Integer(46) }));
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date = new Date();
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String result = format.format(new Object[] { date });
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String expected = "xx " + DateFormat.getInstance().format(date);
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Invalid date:\n" + result + "\n" + expected, result
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(expected));
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format = new MessageFormat("{0,date}{1,time}{2,number,integer}");
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("nothing");
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Found formats", "nothing", format.toPattern());
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0}");
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull("Wrong format", format.getFormats()[0]);
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong pattern", "{0}", format.toPattern());
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, \t\u001ftime }");
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong time format", format.getFormats()[0]
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(DateFormat.getTimeInstance()));
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time pattern", "{0,time}", format.toPattern());
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0,Time, Short\n}");
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong short time format", format.getFormats()[0]
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(DateFormat.getTimeInstance(DateFormat.SHORT)));
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong short time pattern",
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,time,short}", format.toPattern());
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0,TIME,\nmedium  }");
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong medium time format", format.getFormats()[0]
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(DateFormat.getTimeInstance(DateFormat.MEDIUM)));
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong medium time pattern",
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,time}", format.toPattern());
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0,time,LONG}");
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong long time format", format.getFormats()[0]
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(DateFormat.getTimeInstance(DateFormat.LONG)));
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong long time pattern",
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,time,long}", format.toPattern());
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.setLocale(Locale.FRENCH); // use French since English has the
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // same LONG and FULL time patterns
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0,time, Full}");
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong full time format", format.getFormats()[0]
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(DateFormat.getTimeInstance(DateFormat.FULL,
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        Locale.FRENCH)));
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong full time pattern",
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,time,full}", format.toPattern());
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.setLocale(Locale.getDefault());
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, date}");
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong date format", format.getFormats()[0]
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(DateFormat.getDateInstance()));
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong date pattern", "{0,date}", format.toPattern());
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, date, short}");
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong short date format", format.getFormats()[0]
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(DateFormat.getDateInstance(DateFormat.SHORT)));
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong short date pattern",
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,date,short}", format.toPattern());
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, date, medium}");
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong medium date format", format.getFormats()[0]
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(DateFormat.getDateInstance(DateFormat.MEDIUM)));
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong medium date pattern",
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,date}", format.toPattern());
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, date, long}");
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong long date format", format.getFormats()[0]
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(DateFormat.getDateInstance(DateFormat.LONG)));
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong long date pattern",
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,date,long}", format.toPattern());
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, date, full}");
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong full date format", format.getFormats()[0]
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(DateFormat.getDateInstance(DateFormat.FULL)));
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong full date pattern",
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,date,full}", format.toPattern());
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, date, MMM d {hh:mm:ss}}");
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time/date format", " MMM d {hh:mm:ss}", ((SimpleDateFormat) (format
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getFormats()[0])).toPattern());
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time/date pattern",
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,date, MMM d {hh:mm:ss}}", format.toPattern());
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, number}");
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong number format", format.getFormats()[0]
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(NumberFormat.getNumberInstance()));
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong number pattern",
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,number}", format.toPattern());
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, number, currency}");
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong currency number format", format.getFormats()[0]
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(NumberFormat.getCurrencyInstance()));
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong currency number pattern",
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,number,currency}", format.toPattern());
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, number, percent}");
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong percent number format", format.getFormats()[0]
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(NumberFormat.getPercentInstance()));
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong percent number pattern",
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,number,percent}", format.toPattern());
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, number, integer}");
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NumberFormat nf = NumberFormat.getInstance();
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        nf.setMaximumFractionDigits(0);
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        nf.setParseIntegerOnly(true);
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong integer number format", format.getFormats()[0]
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(nf));
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong integer number pattern",
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,number,integer}", format.toPattern());
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, number, {'#'}##0.0E0}");
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /*
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * TODO validate these assertions
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * String actual = ((DecimalFormat)(format.getFormats()[0])).toPattern();
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * assertEquals("Wrong pattern number format", "' {#}'##0.0E0", actual);
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * assertEquals("Wrong pattern number pattern", "{0,number,' {#}'##0.0E0}", format.toPattern());
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         *
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{0, choice,0#no|1#one|2#{1,number}}");
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong choice format",
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						"0.0#no|1.0#one|2.0#{1,number}", ((ChoiceFormat) format.getFormats()[0]).toPattern());
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong choice pattern",
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{0,choice,0.0#no|1.0#one|2.0#{1,number}}", format.toPattern());
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong formatted choice", "3.6", format.format(
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Object[] { new Integer(2), new Float(3.6) }));
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            format.applyPattern("WRONG MESSAGE FORMAT {0,number,{}");
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Expected IllegalArgumentException for invalid pattern");
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-65
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat mf = new MessageFormat("{0,number,integer}");
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String badpattern = "{0,number,#";
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            mf.applyPattern(badpattern);
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Assert 0: Failed to detect unmatched brackets.");
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#clone()
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_clone() {
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.lang.Object java.text.MessageFormat.clone()
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat format = new MessageFormat("'{'choice'}'{0}");
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat clone = (MessageFormat) format.clone();
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Clone not equal", format.equals(clone));
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong answer",
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"{choice}{0}", format.format(new Object[] {}));
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        clone.setFormat(0, DateFormat.getInstance());
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Clone shares format data", !format.equals(clone));
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format = (MessageFormat) clone.clone();
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] formats = clone.getFormats();
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ((SimpleDateFormat) formats[0]).applyPattern("adk123");
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Clone shares format data", !format.equals(clone));
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#equals(java.lang.Object)
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_equalsLjava_lang_Object() {
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method boolean
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // java.text.MessageFormat.equals(java.lang.Object)
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat format1 = new MessageFormat("{0}");
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat format2 = new MessageFormat("{1}");
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Should not be equal", !format1.equals(format2));
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format2.applyPattern("{0}");
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Should be equal", format1.equals(format2));
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SimpleDateFormat date = (SimpleDateFormat) DateFormat.getTimeInstance();
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format1.setFormat(0, DateFormat.getTimeInstance());
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format2.setFormat(0, new SimpleDateFormat(date.toPattern()));
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Should be equal2", format1.equals(format2));
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#hashCode()
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_hashCode() {
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // int java.text.MessageFormat.hashCode()
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Should be equal", 3648, new MessageFormat("rr", null).hashCode());
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#formatToCharacterIterator(java.lang.Object)
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    //FIXME This test fails on Harmony ClassLibrary
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void failing_test_formatToCharacterIteratorLjava_lang_Object() {
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method formatToCharacterIterator(java.lang.Object)
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new Support_MessageFormat("test_formatToCharacterIteratorLjava_lang_Object").t_formatToCharacterIterator();
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#format(java.lang.Object[],
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *        java.lang.StringBuffer, java.text.FieldPosition)
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_format$Ljava_lang_ObjectLjava_lang_StringBufferLjava_text_FieldPosition() {
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.lang.StringBuffer
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // java.text.MessageFormat.format(java.lang.Object [],
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // java.lang.StringBuffer, java.text.FieldPosition)
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat format = new MessageFormat("{1,number,integer}");
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        StringBuffer buffer = new StringBuffer();
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.format(new Object[] { "0", new Double(53.863) }, buffer,
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new FieldPosition(0));
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong result", "54", buffer.toString());
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .applyPattern("{0,choice,0#zero|1#one '{1,choice,2#two {2,time}}'}");
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date = new Date();
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String expected = "one two "
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + DateFormat.getTimeInstance().format(date);
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String result = format.format(new Object[] { new Double(1.6),
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new Integer(3), date });
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Choice not recursive:\n" + expected + "\n" + result,
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                expected.equals(result));
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#format(java.lang.Object,
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *        java.lang.StringBuffer, java.text.FieldPosition)
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_formatLjava_lang_ObjectLjava_lang_StringBufferLjava_text_FieldPosition() {
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.lang.StringBuffer
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // java.text.MessageFormat.format(java.lang.Object,
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // java.lang.StringBuffer, java.text.FieldPosition)
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new Support_MessageFormat(
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "test_formatLjava_lang_ObjectLjava_lang_StringBufferLjava_text_FieldPosition")
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .t_format_with_FieldPosition();
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#getFormats()
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getFormats() {
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.text.Format []
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // java.text.MessageFormat.getFormats()
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with repeating formats and max argument index < max offset
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] formats = format1.getFormats();
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] correctFormats = new Format[] {
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                NumberFormat.getCurrencyInstance(),
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DateFormat.getTimeInstance(),
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                NumberFormat.getPercentInstance(), null,
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("0#off|1#on"), DateFormat.getDateInstance(), };
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test1:Returned wrong number of formats:",
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test1:wrong format for pattern index " + i + ":",
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with max argument index > max offset
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = format2.getFormats();
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        correctFormats = new Format[] { NumberFormat.getCurrencyInstance(),
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DateFormat.getTimeInstance(),
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                NumberFormat.getPercentInstance(), null,
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("0#off|1#on"), DateFormat.getDateInstance() };
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test2:Returned wrong number of formats:",
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test2:wrong format for pattern index " + i + ":",
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with argument number being zero
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = format3.getFormats();
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test3: Returned wrong number of formats:", 0,
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                formats.length);
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#getFormatsByArgumentIndex()
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getFormatsByArgumentIndex() {
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.text.Format [] test_getFormatsByArgumentIndex()
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with repeating formats and max argument index < max offset
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] formats = format1.getFormatsByArgumentIndex();
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] correctFormats = new Format[] { DateFormat.getDateInstance(),
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("0#off|1#on"), DateFormat.getTimeInstance(),
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                NumberFormat.getCurrencyInstance(), null };
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test1:Returned wrong number of formats:",
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test1:wrong format for argument index " + i + ":",
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with max argument index > max offset
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = format2.getFormatsByArgumentIndex();
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        correctFormats = new Format[] { DateFormat.getDateInstance(),
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("0#off|1#on"), null,
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                NumberFormat.getCurrencyInstance(), null, null, null, null,
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DateFormat.getTimeInstance() };
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test2:Returned wrong number of formats:",
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test2:wrong format for argument index " + i + ":",
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with argument number being zero
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = format3.getFormatsByArgumentIndex();
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test3: Returned wrong number of formats:", 0,
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                formats.length);
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#setFormatByArgumentIndex(int,
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *        java.text.Format)
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setFormatByArgumentIndexILjava_text_Format() {
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test for method setFormatByArgumentIndex(int, Format)
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat f1 = (MessageFormat) format1.clone();
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1.setFormatByArgumentIndex(0, DateFormat.getTimeInstance());
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1.setFormatByArgumentIndex(4, new ChoiceFormat("1#few|2#ok|3#a lot"));
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with repeating formats and max argument index < max offset
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // compare getFormatsByArgumentIndex() results after calls to
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // setFormatByArgumentIndex()
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] formats = f1.getFormatsByArgumentIndex();
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] correctFormats = new Format[] { DateFormat.getTimeInstance(),
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("0#off|1#on"), DateFormat.getTimeInstance(),
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                NumberFormat.getCurrencyInstance(),
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("1#few|2#ok|3#a lot") };
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test1A:Returned wrong number of formats:",
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test1B:wrong format for argument index " + i + ":",
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // compare getFormats() results after calls to
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // setFormatByArgumentIndex()
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = f1.getFormats();
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        correctFormats = new Format[] { NumberFormat.getCurrencyInstance(),
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DateFormat.getTimeInstance(), DateFormat.getTimeInstance(),
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("1#few|2#ok|3#a lot"),
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("0#off|1#on"), DateFormat.getTimeInstance(), };
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test1C:Returned wrong number of formats:",
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test1D:wrong format for pattern index " + i + ":",
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test setting argumentIndexes that are not used
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat f2 = (MessageFormat) format2.clone();
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2.setFormatByArgumentIndex(2, NumberFormat.getPercentInstance());
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2.setFormatByArgumentIndex(4, DateFormat.getTimeInstance());
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = f2.getFormatsByArgumentIndex();
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        correctFormats = format2.getFormatsByArgumentIndex();
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test2A:Returned wrong number of formats:",
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test2B:wrong format for argument index " + i + ":",
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = f2.getFormats();
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        correctFormats = format2.getFormats();
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test2C:Returned wrong number of formats:",
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test2D:wrong format for pattern index " + i + ":",
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test exceeding the argumentIndex number
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat f3 = (MessageFormat) format3.clone();
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f3.setFormatByArgumentIndex(1, NumberFormat.getCurrencyInstance());
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = f3.getFormatsByArgumentIndex();
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test3A:Returned wrong number of formats:", 0,
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                formats.length);
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = f3.getFormats();
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test3B:Returned wrong number of formats:", 0,
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                formats.length);
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#setFormatsByArgumentIndex(java.text.Format[])
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setFormatsByArgumentIndex$Ljava_text_Format() {
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test for method setFormatByArgumentIndex(Format[])
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat f1 = (MessageFormat) format1.clone();
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with repeating formats and max argument index < max offset
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // compare getFormatsByArgumentIndex() results after calls to
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // setFormatsByArgumentIndex(Format[])
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] correctFormats = new Format[] { DateFormat.getTimeInstance(),
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("0#off|1#on"), DateFormat.getTimeInstance(),
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                NumberFormat.getCurrencyInstance(),
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("1#few|2#ok|3#a lot") };
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1.setFormatsByArgumentIndex(correctFormats);
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] formats = f1.getFormatsByArgumentIndex();
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test1A:Returned wrong number of formats:",
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test1B:wrong format for argument index " + i + ":",
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // compare getFormats() results after calls to
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // setFormatByArgumentIndex()
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = f1.getFormats();
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        correctFormats = new Format[] { NumberFormat.getCurrencyInstance(),
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DateFormat.getTimeInstance(), DateFormat.getTimeInstance(),
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("1#few|2#ok|3#a lot"),
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("0#off|1#on"), DateFormat.getTimeInstance(), };
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test1C:Returned wrong number of formats:",
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test1D:wrong format for pattern index " + i + ":",
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test setting argumentIndexes that are not used
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat f2 = (MessageFormat) format2.clone();
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Format[] inputFormats = new Format[] { DateFormat.getDateInstance(),
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ChoiceFormat("0#off|1#on"),
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                NumberFormat.getPercentInstance(),
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                NumberFormat.getCurrencyInstance(),
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DateFormat.getTimeInstance(), null, null, null,
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DateFormat.getTimeInstance() };
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2.setFormatsByArgumentIndex(inputFormats);
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = f2.getFormatsByArgumentIndex();
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        correctFormats = format2.getFormatsByArgumentIndex();
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test2A:Returned wrong number of formats:",
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test2B:wrong format for argument index " + i + ":",
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = f2.getFormats();
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        correctFormats = new Format[] { NumberFormat.getCurrencyInstance(),
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DateFormat.getTimeInstance(), DateFormat.getDateInstance(),
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                null, new ChoiceFormat("0#off|1#on"),
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                DateFormat.getDateInstance() };
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test2C:Returned wrong number of formats:",
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                correctFormats.length, formats.length);
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < correctFormats.length; i++) {
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test2D:wrong format for pattern index " + i + ":",
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    correctFormats[i], formats[i]);
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test exceeding the argumentIndex number
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat f3 = (MessageFormat) format3.clone();
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f3.setFormatsByArgumentIndex(inputFormats);
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = f3.getFormatsByArgumentIndex();
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test3A:Returned wrong number of formats:", 0,
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                formats.length);
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        formats = f3.getFormats();
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test3B:Returned wrong number of formats:", 0,
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                formats.length);
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#parse(java.lang.String,
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *        java.text.ParsePosition)
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseLjava_lang_StringLjava_text_ParsePosition() {
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat format = new MessageFormat("date is {0,date,MMM d, yyyy}");
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ParsePosition pos = new ParsePosition(2);
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Object[] result = (Object[]) format
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .parse("xxdate is Feb 28, 1999", pos);
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("No result: " + result.length, result.length >= 1);
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong answer", ((Date) result[0])
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(new GregorianCalendar(1999, Calendar.FEBRUARY, 28)
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .getTime()));
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat mf = new MessageFormat("vm={0},{1},{2}");
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        result = mf.parse("vm=win,foo,bar", new ParsePosition(0));
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Invalid parse", result[0].equals("win")
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                && result[1].equals("foo") && result[2].equals("bar"));
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mf = new MessageFormat("{0}; {0}; {0}");
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String parse = "a; b; c";
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        result = mf.parse(parse, new ParsePosition(0));
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong variable result", "c", result[0]);
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		mf = new MessageFormat("before {0}, after {1,number}");
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		parse = "before you, after 42";
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		pos.setIndex(0);
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		pos.setErrorIndex(8);
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		result = mf.parse(parse, pos);
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals(2, result.length);
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#setLocale(java.util.Locale)
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setLocaleLjava_util_Locale() {
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method void
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // java.text.MessageFormat.setLocale(java.util.Locale)
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat format = new MessageFormat("date {0,date}");
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.setLocale(Locale.CHINA);
686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong locale1", Locale.CHINA, format.getLocale());
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format.applyPattern("{1,date}");
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong locale3", DateFormat.getDateInstance(DateFormat.DEFAULT,
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Locale.CHINA), format.getFormats()[0]);
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.text.MessageFormat#toPattern()
694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toPattern() {
696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.lang.String java.text.MessageFormat.toPattern()
697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String pattern = "[{0}]";
698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat mf = new MessageFormat(pattern);
699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong pattern", mf.toPattern().equals(pattern));
700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-59
702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new MessageFormat("CHOICE {1,choice}").toPattern();
703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Sets up the fixture, for example, open a network connection. This method
707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * is called before a test is executed.
708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void setUp() {
710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    	defaultLocale = Locale.getDefault();
711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    	Locale.setDefault(Locale.US);
712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with repeating formats and max argument index < max offset
714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String pattern = "A {3, number, currency} B {2, time} C {0, number, percent} D {4}  E {1,choice,0#off|1#on} F {0, date}";
715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format1 = new MessageFormat(pattern);
716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with max argument index > max offset
718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        pattern = "A {3, number, currency} B {8, time} C {0, number, percent} D {6}  E {1,choice,0#off|1#on} F {0, date}";
719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format2 = new MessageFormat(pattern);
720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test with argument number being zero
722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        pattern = "A B C D E F";
723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        format3 = new MessageFormat(pattern);
724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tears down the fixture, for example, close a network connection. This
728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method is called after a test is executed.
729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void tearDown() {
731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    	Locale.setDefault(defaultLocale);
732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.MessageFormat(java.util.Locale)
736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorLjava_util_Locale() {
738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Regression for HARMONY-65
739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			new MessageFormat("{0,number,integer", Locale.US);
741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Assert 0: Failed to detect unmatched brackets.");
742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// expected
744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.text.MessageFormat#parse(java.lang.String)
749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_parse() throws ParseException {
751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Regression for HARMONY-63
752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		MessageFormat mf = new MessageFormat("{0,number,#,####}", Locale.US);
753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object[] res = mf.parse("1,00,00");
754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Assert 0: incorrect size of parsed data ", 1, res.length);
755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Assert 1: parsed value incorrectly", new Long(10000), (Long)res[0]);
756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_format_Object() {
759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Regression for HARMONY-1875
760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Locale.setDefault(Locale.CANADA);
761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String pat="text here {0, date, yyyyyyyyy } and here";
763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String etalon="text here  000002007  and here";
764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MessageFormat obj = new MessageFormat(pat);
765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(etalon, obj.format(new Object[]{new Date(1198141737640L)}));
766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("{0}", MessageFormat.format("{0}", (Object[])null));
768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("nullABC", MessageFormat.format("{0}{1}", new String[]{null, "ABC"}));
769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testHARMONY5323() {
772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    	Object []messageArgs = new Object[11];
773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    	for (int i = 0; i < messageArgs.length; i++)
774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    		messageArgs[i] = "dumb"+i;
775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String res = MessageFormat.format("bgcolor=\"{10}\"", messageArgs);
777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(res, "bgcolor=\"dumb10\"");
778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
780