1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* Licensed to the Apache Software Foundation (ASF) under one or more
2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements.  See the NOTICE file distributed with
3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership.
4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0
5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with
6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License.  You may obtain a copy of the License at
7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *     http://www.apache.org/licenses/LICENSE-2.0
9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software
11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS,
12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and
14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License.
15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */
16ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.util;
17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
18cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.BufferedOutputStream;
19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Closeable;
20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.File;
21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FileNotFoundException;
22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FileOutputStream;
23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FilePermission;
24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Flushable;
25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException;
26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.OutputStream;
27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PipedOutputStream;
28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PrintStream;
29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.UnsupportedEncodingException;
30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.math.BigDecimal;
31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.math.BigInteger;
32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.math.MathContext;
33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.nio.charset.Charset;
34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.security.Permission;
35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Arrays;
36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Calendar;
37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Date;
38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.GregorianCalendar;
39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.DuplicateFormatFlagsException;
40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.FormatFlagsConversionMismatchException;
41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Formattable;
42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.FormattableFlags;
43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Formatter;
44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.FormatterClosedException;
45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.IllegalFormatCodePointException;
46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.IllegalFormatConversionException;
47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.IllegalFormatException;
48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.IllegalFormatFlagsException;
49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.IllegalFormatPrecisionException;
50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.IllegalFormatWidthException;
51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Locale;
52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.MissingFormatArgumentException;
53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.MissingFormatWidthException;
54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.TimeZone;
55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.UnknownFormatConversionException;
56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Formatter.BigDecimalLayoutForm;
57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestCase;
59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class FormatterTest extends TestCase {
61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private boolean root;
62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    class MockAppendable implements Appendable {
64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public Appendable append(CharSequence arg0) throws IOException {
65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return null;
66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public Appendable append(char arg0) throws IOException {
69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return null;
70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public Appendable append(CharSequence arg0, int arg1, int arg2)
73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                throws IOException {
74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return null;
75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    class MockFormattable implements Formattable {
79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public void formatTo(Formatter formatter, int flags, int width,
80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                int precision) throws IllegalFormatException {
81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if ((flags & FormattableFlags.UPPERCASE) != 0) {
82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                formatter.format("CUSTOMIZED FORMAT FUNCTION" + " WIDTH: "
83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        + width + " PRECISION: " + precision);
84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                formatter.format("customized format function" + " width: "
86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        + width + " precision: " + precision);
87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public String toString() {
91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return "formattable object";
92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public int hashCode() {
95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return 0xf;
96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    class MockDestination implements Appendable, Flushable {
100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        private StringBuilder data = new StringBuilder();
102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        private boolean enabled = false;
104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public Appendable append(char c) throws IOException {
106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (enabled) {
107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                data.append(c);
108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                enabled = true; // enable it after the first append
109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                throw new IOException();
111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return this;
113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public Appendable append(CharSequence csq) throws IOException {
116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (enabled) {
117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                data.append(csq);
118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                enabled = true; // enable it after the first append
119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                throw new IOException();
121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return this;
123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public Appendable append(CharSequence csq, int start, int end)
126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                throws IOException {
127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (enabled) {
128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                data.append(csq, start, end);
129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                enabled = true; // enable it after the first append
130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                throw new IOException();
132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return this;
134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public void flush() throws IOException {
137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throw new IOException("Always throw IOException");
138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public String toString() {
141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return data.toString();
142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private File notExist;
146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private File fileWithContent;
148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private File readOnly;
150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private File secret;
152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private TimeZone defaultTimeZone;
154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter()
157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_Constructor() {
159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter();
160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f);
161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(f.out() instanceof StringBuilder);
162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f.locale(), Locale.getDefault());
163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f.toString());
164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(Appendable)
168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_Appendable() {
170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        MockAppendable ma = new MockAppendable();
171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f1 = new Formatter(ma);
172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(ma, f1.out());
173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f1.locale(), Locale.getDefault());
174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f1.toString());
175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f2 = new Formatter((Appendable) null);
177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * If a(the input param) is null then a StringBuilder will be created
179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * and the output can be attained by invoking the out() method. But RI
180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * raises an error of FormatterClosedException when invoking out() or
181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * toString().
182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Appendable sb = f2.out();
184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(sb instanceof StringBuilder);
185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f2.toString());
186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(Locale)
190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_util_Locale() {
192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f1 = new Formatter(Locale.FRANCE);
193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(f1.out() instanceof StringBuilder);
194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f1.locale(), Locale.FRANCE);
195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f1.toString());
196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f2 = new Formatter((Locale) null);
198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(f2.locale());
199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(f2.out() instanceof StringBuilder);
200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f2.toString());
201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(Appendable, Locale)
205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_AppendableLjava_util_Locale() {
207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        MockAppendable ma = new MockAppendable();
208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f1 = new Formatter(ma, Locale.CANADA);
209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(ma, f1.out());
210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f1.locale(), Locale.CANADA);
211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f2 = new Formatter(ma, null);
213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(f2.locale());
214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(ma, f1.out());
215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f3 = new Formatter(null, Locale.GERMAN);
217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f3.locale(), Locale.GERMAN);
218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(f3.out() instanceof StringBuilder);
219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(String)
223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_String() throws IOException {
225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter((String) null);
228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e1) {
230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(notExist.getPath());
234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f.locale(), Locale.getDefault());
235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(fileWithContent.getPath());
238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, fileWithContent.length());
239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!root) {
242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(readOnly.getPath());
244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw FileNotFoundException");
245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (FileNotFoundException e) {
246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(String, String)
253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_StringLjava_lang_String()
255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws IOException {
256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter((String) null, Charset.defaultCharset().name());
259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e1) {
261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(notExist.getPath(), null);
266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e2) {
268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(notExist.getPath(), Charset.defaultCharset().name());
272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f.locale(), Locale.getDefault());
273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(notExist.getPath(), "ISO 1111-1");
277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnsupportedEncodingException");
278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnsupportedEncodingException e1) {
279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(fileWithContent.getPath(), "UTF-16BE");
283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, fileWithContent.length());
284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!root) {
287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(readOnly.getPath(), "UTF-16BE");
289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw FileNotFoundException");
290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (FileNotFoundException e) {
291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(String, String, Locale)
298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_StringLjava_lang_StringLjava_util_Locale()
300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws IOException {
301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter((String) null, Charset.defaultCharset().name(),
304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    Locale.KOREA);
305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e1) {
307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(notExist.getPath(), null, Locale.KOREA);
312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e2) {
314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(notExist.getPath(), Charset.defaultCharset().name(),
318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                null);
319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f);
320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(notExist.getPath(), Charset.defaultCharset().name(),
323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Locale.KOREA);
324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f.locale(), Locale.KOREA);
325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(notExist.getPath(), "ISO 1111-1", Locale.CHINA);
329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnsupportedEncodingException");
330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnsupportedEncodingException e1) {
331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(fileWithContent.getPath(), "UTF-16BE",
335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Locale.CANADA_FRENCH);
336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, fileWithContent.length());
337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!root) {
340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(readOnly.getPath(), Charset.defaultCharset()
342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .name(), Locale.ITALY);
343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw FileNotFoundException");
344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (FileNotFoundException e) {
345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(File)
352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_File() throws IOException {
354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter((File) null);
357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e1) {
359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(notExist);
363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f.locale(), Locale.getDefault());
364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(fileWithContent);
367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, fileWithContent.length());
368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!root) {
371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(readOnly);
373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw FileNotFoundException");
374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (FileNotFoundException e) {
375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(File, String)
382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_FileLjava_lang_String()
384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws IOException {
385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter((File) null, Charset.defaultCharset().name());
388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e1) {
390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(notExist, Charset.defaultCharset().name());
394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f.locale(), Locale.getDefault());
395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(fileWithContent, "UTF-16BE");
398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, fileWithContent.length());
399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!root) {
402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(readOnly, Charset.defaultCharset().name());
404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw FileNotFoundException");
405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (FileNotFoundException e) {
406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(notExist, null);
412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e2) {
414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (notExist.exists()) {
417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Fail on RI on Windows, because output stream is created and
418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // not closed when exception thrown
419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(notExist.delete());
420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(notExist, "ISO 1111-1");
425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnsupportedEncodingException");
426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnsupportedEncodingException e1) {
427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (notExist.exists()) {
430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Fail on RI on Windows, because output stream is created and
431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // not closed when exception thrown
432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(notExist.delete());
433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(File, String, Locale)
439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_FileLjava_lang_StringLjava_util_Locale()
441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws IOException {
442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter((File) null, Charset.defaultCharset().name(),
445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    Locale.KOREA);
446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e1) {
448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(notExist, null, Locale.KOREA);
453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e2) {
455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(notExist, Charset.defaultCharset().name(), null);
459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f);
460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(notExist, Charset.defaultCharset().name(),
463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Locale.KOREA);
464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f.locale(), Locale.KOREA);
465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(notExist, "ISO 1111-1", Locale.CHINA);
469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnsupportedEncodingException");
470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnsupportedEncodingException e1) {
471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(fileWithContent.getPath(), "UTF-16BE",
474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Locale.CANADA_FRENCH);
475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, fileWithContent.length());
476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!root) {
479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(readOnly.getPath(), Charset.defaultCharset()
481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .name(), Locale.ITALY);
482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw FileNotFoundException");
483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (FileNotFoundException e) {
484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(PrintStream)
491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_PrintStream() throws IOException {
493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter((PrintStream) null);
496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e1) {
498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        PrintStream ps = new PrintStream(notExist, "UTF-16BE");
502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(ps);
503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(Locale.getDefault(), f.locale());
504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(OutputStream)
509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_OutputStream() throws IOException {
511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter((OutputStream) null);
514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e1) {
516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        OutputStream os = new FileOutputStream(notExist);
520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(os);
521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(Locale.getDefault(), f.locale());
522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#Formatter(OutputStream, String)
527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_OutputStreamLjava_lang_String()
529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws IOException {
530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter((OutputStream) null, Charset.defaultCharset()
533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .name());
534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e1) {
536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        OutputStream os = null;
540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            os = new FileOutputStream(notExist);
542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(os, null);
543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e2) {
545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            os.close();
548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            os = new PipedOutputStream();
552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(os, "TMP-1111");
553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnsupportedEncodingException");
554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnsupportedEncodingException e1) {
555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            os.close();
558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os = new FileOutputStream(fileWithContent);
561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(os, "UTF-16BE");
562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(Locale.getDefault(), f.locale());
563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Test method for 'java.util.Formatter.Formatter(OutputStream, String,
568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Locale)
569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_OutputStreamLjava_lang_StringLjava_util_Locale()
571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws IOException {
572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter((OutputStream) null, Charset.defaultCharset()
575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .name(), Locale.getDefault());
576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e1) {
578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        OutputStream os = null;
582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            os = new FileOutputStream(notExist);
584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(os, null, Locale.getDefault());
585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e2) {
587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            os.close();
590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os = new FileOutputStream(notExist);
593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(os, Charset.defaultCharset().name(), null);
594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            os = new PipedOutputStream();
598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(os, "TMP-1111", Locale.getDefault());
599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnsupportedEncodingException");
600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnsupportedEncodingException e1) {
601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os = new FileOutputStream(fileWithContent);
605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(os, "UTF-16BE", Locale.ENGLISH);
606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(Locale.ENGLISH, f.locale());
607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#locale()
612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_locale() {
614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter((Locale) null);
616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(f.locale());
617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.locale();
621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw FormatterClosedException");
622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (FormatterClosedException e) {
623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#out()
629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_out() {
631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f.out());
634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(f.out() instanceof StringBuilder);
635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.out();
638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw FormatterClosedException");
639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (FormatterClosedException e) {
640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#flush()
647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_flush() throws IOException {
649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(notExist);
651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(f instanceof Flushable);
652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.flush();
655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw FormatterClosedException");
656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (FormatterClosedException e) {
657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // For destination that does not implement Flushable
662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // No exception should be thrown
663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.flush();
664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#close()
668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_close() throws IOException {
670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter(notExist);
671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(f instanceof Closeable);
672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // close next time will not throw exception
674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(f.ioException());
676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#toString()
680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toString() {
682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter();
683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f.toString());
684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f.out().toString(), f.toString());
685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.toString();
688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw FormatterClosedException");
689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (FormatterClosedException e) {
690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#ioException()
696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ioException() throws IOException {
698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(new MockDestination());
700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(f.ioException());
701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.flush();
702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f.ioException());
703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.close();
704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        MockDestination md = new MockDestination();
706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(md);
707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%s%s", "1", "2");
708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // format stop working after IOException
709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(f.ioException());
710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("", f.toString());
711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for null parameter
715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_null() {
717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter();
718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) null, "parameter");
720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("hello", (Object[]) null);
727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("hello", f.toString());
728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for argument index
732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_ArgIndex() {
734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter formatter = new Formatter(Locale.US);
735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter.format("%1$s%2$s%3$s%4$s%5$s%6$s%7$s%8$s%9$s%11$s%10$s", "1",
736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1234567891110", formatter.toString());
738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter = new Formatter(Locale.JAPAN);
740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter.format("%0$s", "hello");
741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("hello", formatter.toString());
742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            formatter = new Formatter(Locale.US);
745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            formatter.format("%-1$s", "1", "2");
746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            formatter = new Formatter(Locale.US);
753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            formatter.format("%$s", "hello", "2");
754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Formatter f = new Formatter(Locale.US);
761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%", "string");
762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter = new Formatter(Locale.FRANCE);
768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter.format("%1$s%2$s%3$s%4$s%5$s%6$s%7$s%8$s%<s%s%s%<s", "1",
769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("123456788122", formatter.toString());
771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter = new Formatter(Locale.FRANCE);
773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter.format(
774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "xx%1$s22%2$s%s%<s%5$s%<s&%7$h%2$s%8$s%<s%s%s%<ssuffix", "1",
775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "2", "3", "4", "5", "6", 7, "8", "9", "10", "11");
776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("xx12221155&7288233suffix", formatter.toString());
777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            formatter.format("%<s", "hello");
780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw MissingFormatArgumentException");
781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MissingFormatArgumentException e) {
782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter = new Formatter(Locale.US);
786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            formatter.format("%123$s", "hello");
788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw MissingFormatArgumentException");
789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MissingFormatArgumentException e) {
790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter = new Formatter(Locale.US);
794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // 2147483648 is the value of Integer.MAX_VALUE + 1
796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            formatter.format("%2147483648$s", "hello");
797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw MissingFormatArgumentException");
798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MissingFormatArgumentException e) {
799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // 2147483647 is the value of Integer.MAX_VALUE
804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            formatter.format("%2147483647$s", "hello");
805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw MissingFormatArgumentException");
806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MissingFormatArgumentException e) {
807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter = new Formatter(Locale.US);
811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            formatter.format("%s%s", "hello");
813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw MissingFormatArgumentException");
814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MissingFormatArgumentException e) {
815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter = new Formatter(Locale.US);
819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter.format("$100", 100);
820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("$100", formatter.toString());
821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter = new Formatter(Locale.UK);
823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        formatter.format("%01$s", "string");
824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("string", formatter.toString());
825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for width
829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_Width() {
831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter(Locale.US);
832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%1$8s", "1");
833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("       1", f.toString());
834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%1$-1%", "string");
837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("%", f.toString());
838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.ITALY);
840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // 2147483648 is the value of Integer.MAX_VALUE + 1
841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%2147483648s", "string");
842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("string", f.toString());
843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // the value of Integer.MAX_VALUE will allocate about 4G bytes of
845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // memory.
846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // It may cause OutOfMemoryError, so this value is not tested
847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for precision
851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_Precision() {
853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter(Locale.US);
854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%.5s", "123456");
855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("12345", f.toString());
856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // 2147483648 is the value of Integer.MAX_VALUE + 1
859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%.2147483648s", "...");
860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("...", f.toString());
861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // the value of Integer.MAX_VALUE will allocate about 4G bytes of
863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // memory.
864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // It may cause OutOfMemoryError, so this value is not tested
865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%10.0b", Boolean.TRUE);
868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("          ", f.toString());
869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%10.01s", "hello");
872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("         h", f.toString());
873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%.s", "hello", "2");
877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%.-5s", "123456");
885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%1.s", "hello", "2");
893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%5.1s", "hello");
900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("    h", f.toString());
901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.FRANCE);
903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%.0s", "hello", "2");
904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("", f.toString());
905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for line sperator
909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_LineSeparator() {
911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String oldSeparator = System.getProperty("line.separator");
914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            System.setProperty("line.separator", "!\n");
916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%1$n", 1);
919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("!\n", f.toString());
920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.KOREAN);
922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("head%1$n%2$n", 1, new Date());
923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("head!\n!\n", f.toString());
924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%n%s", "hello");
927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("!\nhello", f.toString());
928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            System.setProperty("line.separator", oldSeparator);
930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%-n");
935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatFlagsException: %-n");
936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException e) {
937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%+n");
941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatFlagsException: %+n");
942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException e) {
943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%#n");
947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatFlagsException: %#n");
948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException e) {
949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("% n");
953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatFlagsException: % n");
954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException e) {
955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%0n");
959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatFlagsException: %0n");
960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException e) {
961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%,n");
965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatFlagsException: %,n");
966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException e) {
967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%(n");
971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatFlagsException: %(n");
972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException e) {
973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%4n");
979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatWidthException");
980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatWidthException e) {
981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%-4n");
987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatWidthException");
988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatWidthException e) {
989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%.9n");
995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatPrecisionException");
996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatPrecisionException e) {
997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
1001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%5.9n");
1003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatPrecisionException");
1004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatPrecisionException e) {
1005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        System.setProperty("line.separator", oldSeparator);
1009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for percent
1013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_Percent() {
1015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
1016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.ENGLISH);
1018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%1$%", 100);
1019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("%", f.toString());
1020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.CHINA);
1022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%1$%%%", "hello", new Object());
1023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("%%", f.toString());
1024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.CHINA);
1026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%%%s", "hello");
1027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("%hello", f.toString());
1028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
1030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%.9%");
1032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatPrecisionException");
1033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatPrecisionException e) {
1034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
1038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%5.9%");
1040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatPrecisionException");
1041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatPrecisionException e) {
1042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
1046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFormatFlagsConversionMismatchException(f, "%+%");
1047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFormatFlagsConversionMismatchException(f, "%#%");
1048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFormatFlagsConversionMismatchException(f, "% %");
1049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFormatFlagsConversionMismatchException(f, "%0%");
1050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFormatFlagsConversionMismatchException(f, "%,%");
1051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFormatFlagsConversionMismatchException(f, "%(%");
1052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.KOREAN);
1055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%4%", 1);
1056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
1057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * fail on RI the output string should be right justified by appending
1058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * spaces till the whole string is 4 chars width.
1059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
1060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("   %", f.toString());
1061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
1063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%-4%", 100);
1064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
1065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * fail on RI, throw UnknownFormatConversionException the output string
1066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * should be left justified by appending spaces till the whole string is
1067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * 4 chars width.
1068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
1069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("%   ", f.toString());
1070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private void assertFormatFlagsConversionMismatchException(Formatter f, String str) {
1073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(str);
1075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw FormatFlagsConversionMismatchException: "
1076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + str);
1077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            /*
1078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            * error on RI, throw IllegalFormatFlagsException specification
1079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            * says FormatFlagsConversionMismatchException should be thrown
1080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            */
1081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (FormatFlagsConversionMismatchException e) {
1082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for flag
1088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_Flag() {
1090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter(Locale.US);
1091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%1$-#-8s", "something");
1093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw DuplicateFormatFlagsException");
1094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (DuplicateFormatFlagsException e) {
1095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final char[] chars = { '-', '#', '+', ' ', '0', ',', '(', '%', '<' };
1099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Arrays.sort(chars);
1100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
1101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (char i = 0; i <= 256; i++) {
1102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // test 8 bit character
1103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (Arrays.binarySearch(chars, i) >= 0 || Character.isDigit(i)
1104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    || Character.isLetter(i)) {
1105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Do not test 0-9, a-z, A-Z and characters in the chars array.
1106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // They are characters used as flags, width or conversions
1107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                continue;
1108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format("%" + i + "s", 1);
1111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw UnknownFormatConversionException");
1112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (UnknownFormatConversionException e) {
1113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
1114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for general
1120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion b/B
1121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_format_LString$LObject_GeneralConversionB() {
1123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] triple = {
1124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.FALSE, "%3.2b", " fa", },
1125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.FALSE, "%-4.6b", "false", },
1126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.FALSE, "%.2b", "fa", },
1127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.TRUE, "%3.2b", " tr", },
1128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.TRUE, "%-4.6b", "true", },
1129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.TRUE, "%.2b", "tr", },
1130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Character('c'), "%3.2b", " tr", },
1131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Character('c'), "%-4.6b", "true", },
1132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Character('c'), "%.2b", "tr", },
1133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Byte((byte) 0x01), "%3.2b", " tr", },
1134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Byte((byte) 0x01), "%-4.6b", "true", },
1135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Byte((byte) 0x01), "%.2b", "tr", },
1136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Short((short) 0x0001), "%3.2b", " tr", },
1137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Short((short) 0x0001), "%-4.6b", "true", },
1138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Short((short) 0x0001), "%.2b", "tr", },
1139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Integer(1), "%3.2b", " tr", },
1140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Integer(1), "%-4.6b", "true", },
1141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Integer(1), "%.2b", "tr", },
1142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Float(1.1f), "%3.2b", " tr", },
1143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Float(1.1f), "%-4.6b", "true", },
1144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Float(1.1f), "%.2b", "tr", },
1145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Double(1.1d), "%3.2b", " tr", },
1146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Double(1.1d), "%-4.6b", "true", },
1147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Double(1.1d), "%.2b", "tr", },
1148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "", "%3.2b", " tr", },
1149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "", "%-4.6b", "true", },
1150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "", "%.2b", "tr", },
1151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "string content", "%3.2b", " tr", },
1152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "string content", "%-4.6b", "true", },
1153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "string content", "%.2b", "tr", },
1154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new MockFormattable(), "%3.2b", " tr", },
1155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new MockFormattable(), "%-4.6b", "true", },
1156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new MockFormattable(), "%.2b", "tr", },
1157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (Object) null, "%3.2b", " fa", },
1158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (Object) null, "%-4.6b", "false", },
1159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (Object) null, "%.2b", "fa", },
1160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
1164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
1165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
1166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
1167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < triple.length; i++) {
1168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.FRANCE);
1169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) triple[i][pattern], triple[i][input]);
1170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + triple[i][input]
1171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + ",pattern[" + i + "]:" + triple[i][pattern], triple[i][output], f.toString());
1172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
1174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(((String) triple[i][pattern]).toUpperCase(Locale.US), triple[i][input]);
1175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + triple[i][input]
1176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + ",pattern[" + i + "]:" + triple[i][pattern], ((String) triple[i][output])
1177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toUpperCase(Locale.US), f.toString());
1178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for general
1183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion type 's' and 'S'
1184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_format_LString$LObject_GeneralConversionS() {
1186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] triple = {
1188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.FALSE, "%2.3s", "fal", },
1189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.FALSE, "%-6.4s", "fals  ", },
1190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.FALSE, "%.5s", "false", },
1191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.TRUE, "%2.3s", "tru", },
1192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.TRUE, "%-6.4s", "true  ", },
1193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Boolean.TRUE, "%.5s", "true", },
1194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Character('c'), "%2.3s", " c", },
1195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Character('c'), "%-6.4s", "c     ", },
1196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Character('c'), "%.5s", "c", },
1197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Byte((byte) 0x01), "%2.3s", " 1", },
1198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Byte((byte) 0x01), "%-6.4s", "1     ", },
1199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Byte((byte) 0x01), "%.5s", "1", },
1200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Short((short) 0x0001), "%2.3s", " 1", },
1201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Short((short) 0x0001), "%-6.4s", "1     ", },
1202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Short((short) 0x0001), "%.5s", "1", },
1203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Integer(1), "%2.3s", " 1", },
1204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Integer(1), "%-6.4s", "1     ", },
1205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Integer(1), "%.5s", "1", },
1206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Float(1.1f), "%2.3s", "1.1", },
1207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Float(1.1f), "%-6.4s", "1.1   ", },
1208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Float(1.1f), "%.5s", "1.1", },
1209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Double(1.1d), "%2.3s", "1.1", },
1210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Double(1.1d), "%-6.4s", "1.1   ", },
1211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Double(1.1d), "%.5s", "1.1", },
1212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "", "%2.3s", "  ", },
1213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "", "%-6.4s", "      ", },
1214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "", "%.5s", "", },
1215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "string content", "%2.3s", "str", },
1216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "string content", "%-6.4s", "stri  ", },
1217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { "string content", "%.5s", "strin", },
1218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new MockFormattable(), "%2.3s", "customized format function width: 2 precision: 3", },
1219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new MockFormattable(), "%-6.4s", "customized format function width: 6 precision: 4", },
1220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new MockFormattable(), "%.5s", "customized format function width: -1 precision: 5", },
1221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (Object) null, "%2.3s", "nul", },
1222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (Object) null, "%-6.4s", "null  ", },
1223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (Object) null, "%.5s", "null", },
1224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
1228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
1229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
1230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
1231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < triple.length; i++) {
1232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.FRANCE);
1233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) triple[i][pattern], triple[i][input]);
1234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + triple[i][input]
1235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + ",pattern[" + i + "]:" + triple[i][pattern], triple[i][output], f.toString());
1236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
1238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(((String) triple[i][pattern]).toUpperCase(Locale.US), triple[i][input]);
1239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + triple[i][input]
1240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + ",pattern[" + i + "]:" + triple[i][pattern], ((String) triple[i][output])
1241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toUpperCase(Locale.US), f.toString());
1242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for general
1247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion type 'h' and 'H'
1248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_format_LString$LObject_GeneralConversionH() {
1250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[] input = {
1252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Boolean.FALSE,
1253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Boolean.TRUE,
1254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Character('c'),
1255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Byte((byte) 0x01),
1256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Short((short) 0x0001),
1257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Integer(1),
1258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Float(1.1f),
1259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Double(1.1d),
1260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "",
1261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "string content",
1262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new MockFormattable(),
1263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                (Object) null,
1264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
1267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < input.length - 1; i++) {
1268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.FRANCE);
1269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%h", input[i]);
1270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + input[i],
1271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    Integer.toHexString(input[i].hashCode()), f.toString());
1272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
1274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%H", input[i]);
1275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + input[i],
1276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    Integer.toHexString(input[i].hashCode()).toUpperCase(Locale.US), f.toString());
1277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for general
1282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion other cases
1283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_GeneralConversionOther() {
1285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
1286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * In Turkish locale, the upper case of '\u0069' is '\u0130'. The
1287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * following test indicate that '\u0069' is coverted to upper case
1288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * without using the turkish locale.
1289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
1290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter(new Locale("tr"));
1291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%S", "\u0069");
1292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("\u0049", f.toString());
1293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[] input = {
1295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Boolean.FALSE,
1296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Boolean.TRUE,
1297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Character('c'),
1298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Byte((byte) 0x01),
1299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Short((short) 0x0001),
1300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Integer(1),
1301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Float(1.1f),
1302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Double(1.1d),
1303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "",
1304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "string content",
1305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new MockFormattable(),
1306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                (Object) null,
1307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
1309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < input.length; i++) {
1310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (!(input[i] instanceof Formattable)) {
1311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
1312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    f.format("%#s", input[i]);
1313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    /*
1314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                     * fail on RI, spec says if the '#' flag is present and the
1315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                     * argument is not a Formattable , then a
1316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                     * FormatFlagsConversionMismatchException will be thrown.
1317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                     */
1318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw FormatFlagsConversionMismatchException");
1319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (FormatFlagsConversionMismatchException e) {
1320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // expected
1321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
1323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format("%#s%<-#8s", input[i]);
1324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(
1325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        "customized format function width: -1 precision: -1customized format function width: 8 precision: -1",
1326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        f.toString());
1327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for general
1333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion exception
1334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_GeneralConversionException() {
1336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String[] flagMismatch = { "%#b", "%+b", "% b", "%0b", "%,b",
1337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%(b", "%#B", "%+B", "% B", "%0B", "%,B", "%(B", "%#h", "%+h",
1338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "% h", "%0h", "%,h", "%(h", "%#H", "%+H", "% H", "%0H", "%,H",
1339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%(H", "%+s", "% s", "%0s", "%,s", "%(s", "%+S", "% S", "%0S",
1340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%,S", "%(S" };
1341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter(Locale.US);
1343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < flagMismatch.length; i++) {
1345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(flagMismatch[i], "something");
1347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw FormatFlagsConversionMismatchException");
1348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (FormatFlagsConversionMismatchException e) {
1349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
1350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String[] missingWidth = { "%-b", "%-B", "%-h", "%-H", "%-s",
1354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%-S", };
1355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < missingWidth.length; i++) {
1356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(missingWidth[i], "something");
1358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw MissingFormatWidthException");
1359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (MissingFormatWidthException e) {
1360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
1361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test
1365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
1366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%c", (byte) -0x0001);
1368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Should throw IllegalFormatCodePointException");
1369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatCodePointException e) {
1370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
1374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%c", (short) -0x0001);
1376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Should throw IllegalFormatCodePointException");
1377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatCodePointException e) {
1378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
1382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%c", -0x0001);
1384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Should throw IllegalFormatCodePointException");
1385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatCodePointException e) {
1386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for Character
1392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion
1393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_CharacterConversion() {
1395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter(Locale.US);
1396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[] illArgs = { Boolean.TRUE, new Float(1.1f),
1397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Double(1.1d), "string content", new Float(1.1f), new Date() };
1398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < illArgs.length; i++) {
1399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format("%c", illArgs[i]);
1401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw IllegalFormatConversionException");
1402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalFormatConversionException e) {
1403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
1404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%c", Integer.MAX_VALUE);
1409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatCodePointException");
1410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatCodePointException e) {
1411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%#c", 'c');
1416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw FormatFlagsConversionMismatchException");
1417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (FormatFlagsConversionMismatchException e) {
1418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] triple = {
1422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 'c', "%c", "c" },
1423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 'c', "%-2c", "c " },
1424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { '\u0123', "%c", "\u0123" },
1425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { '\u0123', "%-2c", "\u0123 " },
1426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0x11, "%c", "\u0011" },
1427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0x11, "%-2c", "\u0011 " },
1428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0x1111, "%c", "\u1111" },
1429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0x1111, "%-2c", "\u1111 " },
1430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x11, "%c", "\u0011" },
1431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x11, "%-2c", "\u0011 " },
1432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
1435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
1436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
1437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < triple.length; i++) {
1438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
1439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) triple[i][pattern], triple[i][input]);
1440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(triple[i][output], f.toString());
1441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
1444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%c", 0x10000);
1445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0x10000, f.toString().codePointAt(0));
1446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%2.2c", 'c');
1449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatPrecisionException");
1450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatPrecisionException e) {
1451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
1452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
1455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%C", 'w');
1456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // error on RI, throw UnknownFormatConversionException
1457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // RI do not support converter 'C'
1458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("W", f.toString());
1459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.JAPAN);
1461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%Ced", 0x1111);
1462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // error on RI, throw UnknownFormatConversionException
1463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // RI do not support converter 'C'
1464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("\u1111ed", f.toString());
1465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for legal
1470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Byte/Short/Integer/Long conversion type 'd'
1471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongConversionD() {
1473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] triple = {
1474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%d", "0" },
1475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%10d", "         0" },
1476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%-1d", "0" },
1477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%+d", "+0" },
1478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "% d", " 0" },
1479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%,d", "0" },
1480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%(d", "0" },
1481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%08d", "00000000" },
1482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%-+,(11d", "+0         " },
1483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%0 ,(11d", " 0000000000" },
1484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%d", "-1" },
1486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%10d", "        -1" },
1487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%-1d", "-1" },
1488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%+d", "-1" },
1489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "% d", "-1" },
1490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%,d", "-1" },
1491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%(d", "(1)" },
1492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%08d", "-0000001" },
1493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%-+,(11d", "(1)        " },
1494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%0 ,(11d", "(000000001)" },
1495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%d", "-3805" },
1497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%10d", "     -3805" },
1498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%-1d", "-3805" },
1499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%+d", "-3805" },
1500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "% d", "-3805" },
1501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%,d", "-3.805" },
1502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%(d", "(3805)" },
1503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%08d", "-0003805" },
1504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%-+,(11d", "(3.805)    " },
1505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%0 ,(11d", "(00003.805)" },
1506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%d", "1193046" },
1508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%10d", "   1193046" },
1509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%-1d", "1193046" },
1510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%+d", "+1193046" },
1511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "% d", " 1193046" },
1512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%,d", "1.193.046" },
1513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%(d", "1193046" },
1514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%08d", "01193046" },
1515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%-+,(11d", "+1.193.046 " },
1516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%0 ,(11d", " 01.193.046" },
1517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%d", "-3" },
1519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%10d", "        -3" },
1520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%-1d", "-3" },
1521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%+d", "-3" },
1522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "% d", "-3" },
1523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%,d", "-3" },
1524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%(d", "(3)" },
1525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%08d", "-0000003" },
1526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%-+,(11d", "(3)        " },
1527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%0 ,(11d", "(000000003)" },
1528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%d", "124076833" },
1530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%10d", " 124076833" },
1531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%-1d", "124076833" },
1532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%+d", "+124076833" },
1533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "% d", " 124076833" },
1534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%,d", "124.076.833" },
1535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%(d", "124076833" },
1536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%08d", "124076833" },
1537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%-+,(11d", "+124.076.833" },
1538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%0 ,(11d", " 124.076.833" },
1539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%d", "-1" },
1541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%10d", "        -1" },
1542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%-1d", "-1" },
1543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%+d", "-1" },
1544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "% d", "-1" },
1545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%,d", "-1" },
1546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%(d", "(1)" },
1547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%08d", "-0000001" },
1548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%-+,(11d", "(1)        " },
1549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%0 ,(11d", "(000000001)" },
1550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
1553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
1554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
1555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f;
1556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < triple.length; i++) {
1557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
1558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) triple[i][pattern],
1559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    triple[i][input]);
1560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
1561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + triple[i][pattern], triple[i][output], f
1562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString());
1563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for legal
1568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Byte/Short/Integer/Long conversion type 'o'
1569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongConversionO() {
1571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] triple = {
1572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%o", "0" },
1573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%-6o", "0     " },
1574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%08o", "00000000" },
1575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%#o", "00" },
1576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%0#11o", "00000000000" },
1577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%-#9o", "00       " },
1578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%o", "377" },
1580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%-6o", "377   " },
1581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%08o", "00000377" },
1582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%#o", "0377" },
1583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%0#11o", "00000000377" },
1584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%-#9o", "0377     " },
1585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%o", "170443" },
1587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%-6o", "170443" },
1588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%08o", "00170443" },
1589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%#o", "0170443" },
1590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%0#11o", "00000170443" },
1591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%-#9o", "0170443  " },
1592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%o", "4432126" },
1594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%-6o", "4432126" },
1595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%08o", "04432126" },
1596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%#o", "04432126" },
1597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%0#11o", "00004432126" },
1598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%-#9o", "04432126 " },
1599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%o", "37777777775" },
1601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%-6o", "37777777775" },
1602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%08o", "37777777775" },
1603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%#o", "037777777775" },
1604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%0#11o", "037777777775" },
1605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%-#9o", "037777777775" },
1606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%o", "731241441" },
1608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%-6o", "731241441" },
1609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%08o", "731241441" },
1610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%#o", "0731241441" },
1611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%0#11o", "00731241441" },
1612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%-#9o", "0731241441" },
1613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%o", "1777777777777777777777" },
1615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%-6o", "1777777777777777777777" },
1616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%08o", "1777777777777777777777" },
1617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%#o", "01777777777777777777777" },
1618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%0#11o", "01777777777777777777777" },
1619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%-#9o", "01777777777777777777777" },
1620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
1623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
1624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
1625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f;
1626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < triple.length; i++) {
1627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.ITALY);
1628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) triple[i][pattern],
1629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    triple[i][input]);
1630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
1631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + triple[i][pattern], triple[i][output], f
1632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString());
1633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for legal
1638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Byte/Short/Integer/Long conversion type 'x' and 'X'
1639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongConversionX() {
1641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] triple = {
1642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%x", "0" },
1643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%-8x", "0       " },
1644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%06x", "000000" },
1645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%#x", "0x0" },
1646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%0#12x", "0x0000000000" },
1647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0, "%-#9x", "0x0      " },
1648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%x", "ff" },
1650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%-8x", "ff      " },
1651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%06x", "0000ff" },
1652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%#x", "0xff" },
1653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%0#12x", "0x00000000ff" },
1654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (byte) 0xff, "%-#9x", "0xff     " },
1655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%x", "f123" },
1657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%-8x", "f123    " },
1658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%06x", "00f123" },
1659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%#x", "0xf123" },
1660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%0#12x", "0x000000f123" },
1661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { (short) 0xf123, "%-#9x", "0xf123   " },
1662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%x", "123456" },
1664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%-8x", "123456  " },
1665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%06x", "123456" },
1666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%#x", "0x123456" },
1667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%0#12x", "0x0000123456" },
1668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x123456, "%-#9x", "0x123456 " },
1669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%x", "fffffffd" },
1671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%-8x", "fffffffd" },
1672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%06x", "fffffffd" },
1673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%#x", "0xfffffffd" },
1674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%0#12x", "0x00fffffffd" },
1675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -3, "%-#9x", "0xfffffffd" },
1676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%x", "7654321" },
1678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%-8x", "7654321 " },
1679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%06x", "7654321" },
1680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%#x", "0x7654321" },
1681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%0#12x", "0x0007654321" },
1682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0x7654321L, "%-#9x", "0x7654321" },
1683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%x", "ffffffffffffffff" },
1685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%-8x", "ffffffffffffffff" },
1686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%06x", "ffffffffffffffff" },
1687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%#x", "0xffffffffffffffff" },
1688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%0#12x", "0xffffffffffffffff" },
1689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1L, "%-#9x", "0xffffffffffffffff" },
1690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
1693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
1694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
1695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f;
1696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < triple.length; i++) {
1697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.FRANCE);
1698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) triple[i][pattern],
1699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    triple[i][input]);
1700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
1701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + triple[i][pattern], triple[i][output], f
1702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString());
1703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.FRANCE);
1705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) triple[i][pattern],
1706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    triple[i][input]);
1707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + triple[i][input] + ",pattern["
1708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + triple[i][pattern], triple[i][output], f
1709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString());
1710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for Date/Time
1715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion
1716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_DateTimeConversion() {
1718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
1719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Date now = new Date(1147327147578L);
1720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Calendar paris = Calendar.getInstance(TimeZone
1722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getTimeZone("Europe/Paris"), Locale.FRANCE);
1723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        paris.set(2006, 4, 8, 12, 0, 0);
1724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        paris.set(Calendar.MILLISECOND, 453);
1725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Calendar china = Calendar.getInstance(
1726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                TimeZone.getTimeZone("GMT-08:00"), Locale.CHINA);
1727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        china.set(2006, 4, 8, 12, 0, 0);
1728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        china.set(Calendar.MILLISECOND, 609);
1729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] lowerCaseGermanTriple = {
1731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'a', "Do." },  //$NON-NLS-2$
1732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'a', "So." },  //$NON-NLS-2$
1733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'a', "Do." },  //$NON-NLS-2$
1734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'a', "Do." },  //$NON-NLS-2$
1735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'a', "Mo." },  //$NON-NLS-2$
1736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'a', "Mo." },  //$NON-NLS-2$
1737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'b', "Jan" },  //$NON-NLS-2$
1738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'b', "Aug" },  //$NON-NLS-2$
1739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'b', "Jan" },  //$NON-NLS-2$
1740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'b', "Mai" },  //$NON-NLS-2$
1741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'b', "Mai" },  //$NON-NLS-2$
1742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'b', "Mai" },  //$NON-NLS-2$
1743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'c', "Do. Jan 01 08:00:00 GMT+08:00 1970" },  //$NON-NLS-2$
1744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'c', "So. Aug 17 15:18:47 GMT+08:00 292278994" },  //$NON-NLS-2$
1745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'c', "Do. Jan 01 07:59:59 GMT+08:00 1970" },  //$NON-NLS-2$
1746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'c', "Do. Mai 11 13:59:07 GMT+08:00 2006" },  //$NON-NLS-2$
1747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'c', "Mo. Mai 08 12:00:00 MESZ 2006" },  //$NON-NLS-2$
1748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'c', "Mo. Mai 08 12:00:00 GMT-08:00 2006" },  //$NON-NLS-2$
1749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'd', "01" },  //$NON-NLS-2$
1750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'd', "17" },  //$NON-NLS-2$
1751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'd', "01" },  //$NON-NLS-2$
1752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'd', "11" },  //$NON-NLS-2$
1753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'd', "08" },  //$NON-NLS-2$
1754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'd', "08" },  //$NON-NLS-2$
1755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'e', "1" },  //$NON-NLS-2$
1756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'e', "17" },  //$NON-NLS-2$
1757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'e', "1" },  //$NON-NLS-2$
1758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'e', "11" },  //$NON-NLS-2$
1759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'e', "8" },  //$NON-NLS-2$
1760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'e', "8" },  //$NON-NLS-2$
1761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'h', "Jan" },  //$NON-NLS-2$
1762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'h', "Aug" },  //$NON-NLS-2$
1763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'h', "Jan" },  //$NON-NLS-2$
1764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'h', "Mai" },  //$NON-NLS-2$
1765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'h', "Mai" },  //$NON-NLS-2$
1766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'h', "Mai" },  //$NON-NLS-2$
1767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'j', "001" },  //$NON-NLS-2$
1768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'j', "229" },  //$NON-NLS-2$
1769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'j', "001" },  //$NON-NLS-2$
1770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'j', "131" },  //$NON-NLS-2$
1771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'j', "128" },  //$NON-NLS-2$
1772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'j', "128" },  //$NON-NLS-2$
1773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'k', "8" },  //$NON-NLS-2$
1774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'k', "15" },  //$NON-NLS-2$
1775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'k', "7" },  //$NON-NLS-2$
1776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'k', "13" },  //$NON-NLS-2$
1777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'k', "12" },  //$NON-NLS-2$
1778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'k', "12" },  //$NON-NLS-2$
1779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'l', "8" }, //$NON-NLS-2$
1780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'l', "3" }, //$NON-NLS-2$
1781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'l', "7" }, //$NON-NLS-2$
1782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'l', "1" }, //$NON-NLS-2$
1783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'l', "12" }, //$NON-NLS-2$
1784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'l', "12" }, //$NON-NLS-2$
1785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'm', "01" }, //$NON-NLS-2$
1786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'm', "08" }, //$NON-NLS-2$
1787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'm', "01" }, //$NON-NLS-2$
1788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'm', "05" }, //$NON-NLS-2$
1789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'm', "05" }, //$NON-NLS-2$
1790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'm', "05" }, //$NON-NLS-2$
1791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'p', "vorm." }, //$NON-NLS-2$
1792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'p', "nachm." }, //$NON-NLS-2$
1793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'p', "vorm." }, //$NON-NLS-2$
1794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'p', "nachm." }, //$NON-NLS-2$
1795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'p', "nachm." }, //$NON-NLS-2$
1796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'p', "nachm." }, //$NON-NLS-2$
1797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'r', "08:00:00 vorm." }, //$NON-NLS-2$
1798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'r', "03:18:47 nachm." }, //$NON-NLS-2$
1799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'r', "07:59:59 vorm." }, //$NON-NLS-2$
1800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'r', "01:59:07 nachm." }, //$NON-NLS-2$
1801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'r', "12:00:00 nachm." }, //$NON-NLS-2$
1802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'r', "12:00:00 nachm." }, //$NON-NLS-2$
1803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 's', "0" }, //$NON-NLS-2$
1804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 's', "9223372036854775" }, //$NON-NLS-2$
1805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 's', "-1" }, //$NON-NLS-2$
1806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 's', "1147327147" }, //$NON-NLS-2$
1807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 's', "1147082400" }, //$NON-NLS-2$
1808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 's', "1147118400" }, //$NON-NLS-2$
1809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'y', "70" }, //$NON-NLS-2$
1810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'y', "94" }, //$NON-NLS-2$
1811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'y', "70" }, //$NON-NLS-2$
1812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'y', "06" }, //$NON-NLS-2$
1813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'y', "06" }, //$NON-NLS-2$
1814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'y', "06" }, //$NON-NLS-2$
1815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'z', "+0800" }, //$NON-NLS-2$
1816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'z', "+0800" }, //$NON-NLS-2$
1817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'z', "+0800" }, //$NON-NLS-2$
1818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'z', "+0800" }, //$NON-NLS-2$
1819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'z', "+0100" }, //$NON-NLS-2$
1820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'z', "-0800" }, //$NON-NLS-2$
1821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] lowerCaseFranceTriple = {
1825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'a', "jeu." }, //$NON-NLS-2$
1826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'a', "dim." }, //$NON-NLS-2$
1827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'a', "jeu." }, //$NON-NLS-2$
1828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'a', "jeu." }, //$NON-NLS-2$
1829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'a', "lun." }, //$NON-NLS-2$
1830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'a', "lun." }, //$NON-NLS-2$
1831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'b', "janv." }, //$NON-NLS-2$
1832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'b', "ao\u00fbt" }, //$NON-NLS-2$
1833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'b', "janv." }, //$NON-NLS-2$
1834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'b', "mai" }, //$NON-NLS-2$
1835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'b', "mai" }, //$NON-NLS-2$
1836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'b', "mai" }, //$NON-NLS-2$
1837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'c', "jeu. janv. 01 08:00:00 UTC+08:00 1970" }, //$NON-NLS-2$
1838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'c', "dim. ao\u00fbt 17 15:18:47 UTC+08:00 292278994" }, //$NON-NLS-2$
1839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'c', "jeu. janv. 01 07:59:59 UTC+08:00 1970" }, //$NON-NLS-2$
1840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'c', "jeu. mai 11 13:59:07 UTC+08:00 2006" }, //$NON-NLS-2$
1841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'c', "lun. mai 08 12:00:00 HAEC 2006" }, //$NON-NLS-2$
1842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'c', "lun. mai 08 12:00:00 UTC-08:00 2006" }, //$NON-NLS-2$
1843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'd', "01" }, //$NON-NLS-2$
1844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'd', "17" }, //$NON-NLS-2$
1845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'd', "01" }, //$NON-NLS-2$
1846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'd', "11" }, //$NON-NLS-2$
1847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'd', "08" }, //$NON-NLS-2$
1848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'd', "08" }, //$NON-NLS-2$
1849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'e', "1" }, //$NON-NLS-2$
1850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'e', "17" }, //$NON-NLS-2$
1851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'e', "1" }, //$NON-NLS-2$
1852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'e', "11" }, //$NON-NLS-2$
1853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'e', "8" }, //$NON-NLS-2$
1854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'e', "8" }, //$NON-NLS-2$
1855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'h', "janv." }, //$NON-NLS-2$
1856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'h', "ao\u00fbt" }, //$NON-NLS-2$
1857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'h', "janv." }, //$NON-NLS-2$
1858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'h', "mai" }, //$NON-NLS-2$
1859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'h', "mai" }, //$NON-NLS-2$
1860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'h', "mai" }, //$NON-NLS-2$
1861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'j', "001" }, //$NON-NLS-2$
1862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'j', "229" }, //$NON-NLS-2$
1863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'j', "001" }, //$NON-NLS-2$
1864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'j', "131" }, //$NON-NLS-2$
1865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'j', "128" }, //$NON-NLS-2$
1866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'j', "128" }, //$NON-NLS-2$
1867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'k', "8" }, //$NON-NLS-2$
1868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'k', "15" }, //$NON-NLS-2$
1869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'k', "7" }, //$NON-NLS-2$
1870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'k', "13" }, //$NON-NLS-2$
1871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'k', "12" }, //$NON-NLS-2$
1872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'k', "12" }, //$NON-NLS-2$
1873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'l', "8" }, //$NON-NLS-2$
1874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'l', "3" }, //$NON-NLS-2$
1875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'l', "7" }, //$NON-NLS-2$
1876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'l', "1" }, //$NON-NLS-2$
1877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'l', "12" }, //$NON-NLS-2$
1878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'l', "12" }, //$NON-NLS-2$
1879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'm', "01" }, //$NON-NLS-2$
1880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'm', "08" }, //$NON-NLS-2$
1881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'm', "01" }, //$NON-NLS-2$
1882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'm', "05" }, //$NON-NLS-2$
1883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'm', "05" }, //$NON-NLS-2$
1884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'm', "05" }, //$NON-NLS-2$
1885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'p', "am" }, //$NON-NLS-2$
1886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'p', "pm" }, //$NON-NLS-2$
1887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'p', "am" }, //$NON-NLS-2$
1888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'p', "pm" }, //$NON-NLS-2$
1889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'p', "pm" }, //$NON-NLS-2$
1890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'p', "pm" }, //$NON-NLS-2$
1891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'r', "08:00:00 AM" }, //$NON-NLS-2$
1892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'r', "03:18:47 PM" }, //$NON-NLS-2$
1893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'r', "07:59:59 AM" }, //$NON-NLS-2$
1894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'r', "01:59:07 PM" }, //$NON-NLS-2$
1895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'r', "12:00:00 PM" }, //$NON-NLS-2$
1896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'r', "12:00:00 PM" }, //$NON-NLS-2$
1897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 's', "0" }, //$NON-NLS-2$
1898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 's', "9223372036854775" }, //$NON-NLS-2$
1899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 's', "-1" }, //$NON-NLS-2$
1900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 's', "1147327147" }, //$NON-NLS-2$
1901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 's', "1147082400" }, //$NON-NLS-2$
1902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 's', "1147118400" }, //$NON-NLS-2$
1903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'y', "70" }, //$NON-NLS-2$
1904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'y', "94" }, //$NON-NLS-2$
1905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'y', "70" }, //$NON-NLS-2$
1906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'y', "06" }, //$NON-NLS-2$
1907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'y', "06" }, //$NON-NLS-2$
1908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'y', "06" }, //$NON-NLS-2$
1909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'z', "+0800" }, //$NON-NLS-2$
1910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'z', "+0800" }, //$NON-NLS-2$
1911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'z', "+0800" }, //$NON-NLS-2$
1912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'z', "+0800" }, //$NON-NLS-2$
1913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'z', "+0100" }, //$NON-NLS-2$
1914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'z', "-0800" }, //$NON-NLS-2$
1915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] lowerCaseJapanTriple = {
1919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'a', "\u6728" }, //$NON-NLS-2$
1920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'a', "\u65e5" }, //$NON-NLS-2$
1921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'a', "\u6728" }, //$NON-NLS-2$
1922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'a', "\u6728" }, //$NON-NLS-2$
1923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'a', "\u6708" }, //$NON-NLS-2$
1924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'a', "\u6708" }, //$NON-NLS-2$
1925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'b', "1\u6708" }, //$NON-NLS-2$
1926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'b', "8\u6708" }, //$NON-NLS-2$
1927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'b', "1\u6708" }, //$NON-NLS-2$
1928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'b', "5\u6708" }, //$NON-NLS-2$
1929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'b', "5\u6708" }, //$NON-NLS-2$
1930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'b', "5\u6708" }, //$NON-NLS-2$
1931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'c', "\u6728 1\u6708 01 08:00:00 GMT+08:00 1970" }, //$NON-NLS-2$
1932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'c', "\u65e5 8\u6708 17 15:18:47 GMT+08:00 292278994" }, //$NON-NLS-2$
1933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'c', "\u6728 1\u6708 01 07:59:59 GMT+08:00 1970" }, //$NON-NLS-2$
1934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'c', "\u6728 5\u6708 11 13:59:07 GMT+08:00 2006" }, //$NON-NLS-2$
1935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'c', "\u6708 5\u6708 08 12:00:00 GMT+02:00 2006" }, //$NON-NLS-2$
1936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'c', "\u6708 5\u6708 08 12:00:00 GMT-08:00 2006" }, //$NON-NLS-2$
1937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'd', "01" }, //$NON-NLS-2$
1938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'd', "17" }, //$NON-NLS-2$
1939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'd', "01" }, //$NON-NLS-2$
1940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'd', "11" }, //$NON-NLS-2$
1941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'd', "08" }, //$NON-NLS-2$
1942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'd', "08" }, //$NON-NLS-2$
1943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'e', "1" }, //$NON-NLS-2$
1944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'e', "17" }, //$NON-NLS-2$
1945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'e', "1" }, //$NON-NLS-2$
1946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'e', "11" }, //$NON-NLS-2$
1947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'e', "8" }, //$NON-NLS-2$
1948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'e', "8" }, //$NON-NLS-2$
1949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'h', "1\u6708" }, //$NON-NLS-2$
1950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'h', "8\u6708" }, //$NON-NLS-2$
1951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'h', "1\u6708" }, //$NON-NLS-2$
1952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'h', "5\u6708" }, //$NON-NLS-2$
1953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'h', "5\u6708" }, //$NON-NLS-2$
1954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'h', "5\u6708" }, //$NON-NLS-2$
1955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'j', "001" }, //$NON-NLS-2$
1956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'j', "229" }, //$NON-NLS-2$
1957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'j', "001" }, //$NON-NLS-2$
1958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'j', "131" }, //$NON-NLS-2$
1959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'j', "128" }, //$NON-NLS-2$
1960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'j', "128" }, //$NON-NLS-2$
1961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'k', "8" }, //$NON-NLS-2$
1962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'k', "15" }, //$NON-NLS-2$
1963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'k', "7" }, //$NON-NLS-2$
1964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'k', "13" }, //$NON-NLS-2$
1965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'k', "12" }, //$NON-NLS-2$
1966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'k', "12" }, //$NON-NLS-2$
1967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'l', "8" }, //$NON-NLS-2$
1968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'l', "3" }, //$NON-NLS-2$
1969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'l', "7" }, //$NON-NLS-2$
1970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'l', "1" }, //$NON-NLS-2$
1971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'l', "12" }, //$NON-NLS-2$
1972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'l', "12" }, //$NON-NLS-2$
1973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'm', "01" }, //$NON-NLS-2$
1974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'm', "08" }, //$NON-NLS-2$
1975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'm', "01" }, //$NON-NLS-2$
1976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'm', "05" }, //$NON-NLS-2$
1977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'm', "05" }, //$NON-NLS-2$
1978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'm', "05" }, //$NON-NLS-2$
1979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'p', "\u5348\u524d" }, //$NON-NLS-2$
1980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'p', "\u5348\u5f8c" }, //$NON-NLS-2$
1981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'p', "\u5348\u524d" }, //$NON-NLS-2$
1982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'p', "\u5348\u5f8c" }, //$NON-NLS-2$
1983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'p', "\u5348\u5f8c" }, //$NON-NLS-2$
1984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'p', "\u5348\u5f8c" }, //$NON-NLS-2$
1985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'r', "08:00:00 \u5348\u524d" }, //$NON-NLS-2$
1986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'r', "03:18:47 \u5348\u5f8c" }, //$NON-NLS-2$
1987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'r', "07:59:59 \u5348\u524d" }, //$NON-NLS-2$
1988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'r', "01:59:07 \u5348\u5f8c" }, //$NON-NLS-2$
1989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'r', "12:00:00 \u5348\u5f8c" }, //$NON-NLS-2$
1990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'r', "12:00:00 \u5348\u5f8c" }, //$NON-NLS-2$
1991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 's', "0" }, //$NON-NLS-2$
1992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 's', "9223372036854775" }, //$NON-NLS-2$
1993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 's', "-1" }, //$NON-NLS-2$
1994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 's', "1147327147" }, //$NON-NLS-2$
1995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 's', "1147082400" }, //$NON-NLS-2$
1996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 's', "1147118400" }, //$NON-NLS-2$
1997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'y', "70" }, //$NON-NLS-2$
1998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'y', "94" }, //$NON-NLS-2$
1999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'y', "70" }, //$NON-NLS-2$
2000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'y', "06" }, //$NON-NLS-2$
2001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'y', "06" }, //$NON-NLS-2$
2002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'y', "06" }, //$NON-NLS-2$
2003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'z', "+0800" }, //$NON-NLS-2$
2004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'z', "+0800" }, //$NON-NLS-2$
2005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'z', "+0800" }, //$NON-NLS-2$
2006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'z', "+0800" }, //$NON-NLS-2$
2007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'z', "+0100" }, //$NON-NLS-2$
2008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'z', "-0800" }, //$NON-NLS-2$
2009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
2010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
2012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
2013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
2014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 90; i++) {
2015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // go through legal conversion
2016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String formatSpecifier = "%t" + lowerCaseGermanTriple[i][pattern]; //$NON-NLS-2$
2017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String formatSpecifierUpper = "%T" + lowerCaseGermanTriple[i][pattern]; //$NON-NLS-2$
2018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // test '%t'
2019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
2020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(formatSpecifier, lowerCaseGermanTriple[i][input]);
2021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
2022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + lowerCaseGermanTriple[i][input], //$NON-NLS-2$
2023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    lowerCaseGermanTriple[i][output], f.toString());
2024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
2026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(Locale.FRANCE, formatSpecifier, lowerCaseFranceTriple[i][input]);
2027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
2028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + lowerCaseFranceTriple[i][input], //$NON-NLS-2$
2029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    lowerCaseFranceTriple[i][output], f.toString());
2030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
2032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(Locale.JAPAN, formatSpecifier, lowerCaseJapanTriple[i][input]);
2033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
2034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + lowerCaseJapanTriple[i][input], //$NON-NLS-2$
2035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    lowerCaseJapanTriple[i][output], f.toString());
2036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // test '%T'
2038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
2039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(formatSpecifierUpper, lowerCaseGermanTriple[i][input]);
2040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
2041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + lowerCaseGermanTriple[i][input], //$NON-NLS-2$
2042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    ((String) lowerCaseGermanTriple[i][output])
2043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .toUpperCase(Locale.US), f.toString());
2044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
2046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(Locale.FRANCE, formatSpecifierUpper, lowerCaseFranceTriple[i][input]);
2047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
2048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + lowerCaseFranceTriple[i][input], //$NON-NLS-2$
2049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    ((String) lowerCaseFranceTriple[i][output])
2050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .toUpperCase(Locale.US), f.toString());
2051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
2053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(Locale.JAPAN, formatSpecifierUpper, lowerCaseJapanTriple[i][input]);
2054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
2055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + lowerCaseJapanTriple[i][input], //$NON-NLS-2$
2056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    ((String) lowerCaseJapanTriple[i][output])
2057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .toUpperCase(Locale.US), f.toString());
2058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] upperCaseGermanTriple = {
2061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'A', "Donnerstag" }, //$NON-NLS-2$
2062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'A', "Sonntag" }, //$NON-NLS-2$
2063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'A', "Donnerstag" }, //$NON-NLS-2$
2064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'A', "Donnerstag" }, //$NON-NLS-2$
2065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'A', "Montag" }, //$NON-NLS-2$
2066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'A', "Montag" }, //$NON-NLS-2$
2067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'B', "Januar" }, //$NON-NLS-2$
2068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'B', "August" }, //$NON-NLS-2$
2069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'B', "Januar" }, //$NON-NLS-2$
2070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'B', "Mai" }, //$NON-NLS-2$
2071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'B', "Mai" }, //$NON-NLS-2$
2072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'B', "Mai" }, //$NON-NLS-2$
2073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'C', "19" }, //$NON-NLS-2$
2074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'C', "2922789" }, //$NON-NLS-2$
2075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'C', "19" }, //$NON-NLS-2$
2076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'C', "20" }, //$NON-NLS-2$
2077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'C', "20" }, //$NON-NLS-2$
2078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'C', "20" }, //$NON-NLS-2$
2079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'D', "01/01/70" }, //$NON-NLS-2$
2080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'D', "08/17/94" }, //$NON-NLS-2$
2081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'D', "01/01/70" }, //$NON-NLS-2$
2082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'D', "05/11/06" }, //$NON-NLS-2$
2083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'D', "05/08/06" }, //$NON-NLS-2$
2084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'D', "05/08/06" }, //$NON-NLS-2$
2085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'F', "1970-01-01" }, //$NON-NLS-2$
2086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'F', "292278994-08-17" }, //$NON-NLS-2$
2087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'F', "1970-01-01" }, //$NON-NLS-2$
2088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'F', "2006-05-11" }, //$NON-NLS-2$
2089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'F', "2006-05-08" }, //$NON-NLS-2$
2090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'F', "2006-05-08" }, //$NON-NLS-2$
2091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'H', "08" }, //$NON-NLS-2$
2092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'H', "15" }, //$NON-NLS-2$
2093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'H', "07" }, //$NON-NLS-2$
2094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'H', "13" }, //$NON-NLS-2$
2095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'H', "12" }, //$NON-NLS-2$
2096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'H', "12" }, //$NON-NLS-2$
2097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'I', "08" }, //$NON-NLS-2$
2098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'I', "03" }, //$NON-NLS-2$
2099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'I', "07" }, //$NON-NLS-2$
2100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'I', "01" }, //$NON-NLS-2$
2101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'I', "12" }, //$NON-NLS-2$
2102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'I', "12" }, //$NON-NLS-2$
2103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'L', "000" }, //$NON-NLS-2$
2104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'L', "807" }, //$NON-NLS-2$
2105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'L', "000" }, //$NON-NLS-2$
2106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'L', "578" }, //$NON-NLS-2$
2107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'L', "453" }, //$NON-NLS-2$
2108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'L', "609" }, //$NON-NLS-2$
2109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'M', "00" }, //$NON-NLS-2$
2110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'M', "18" }, //$NON-NLS-2$
2111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'M', "59" }, //$NON-NLS-2$
2112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'M', "59" }, //$NON-NLS-2$
2113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'M', "00" }, //$NON-NLS-2$
2114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'M', "00" }, //$NON-NLS-2$
2115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'N', "000000000" }, //$NON-NLS-2$
2116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'N', "807000000" }, //$NON-NLS-2$
2117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'N', "000000000" }, //$NON-NLS-2$
2118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'N', "578000000" }, //$NON-NLS-2$
2119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'N', "609000000" }, //$NON-NLS-2$
2120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'N', "609000000" }, //$NON-NLS-2$
2121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'Q', "0" }, //$NON-NLS-2$
2122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'Q', "9223372036854775807" }, //$NON-NLS-2$
2123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'Q', "-1000" }, //$NON-NLS-2$
2124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'Q', "1147327147578" }, //$NON-NLS-2$
2125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'Q', "1147082400453" }, //$NON-NLS-2$
2126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'Q', "1147118400609" }, //$NON-NLS-2$
2127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'R', "08:00" }, //$NON-NLS-2$
2128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'R', "15:18" }, //$NON-NLS-2$
2129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'R', "07:59" }, //$NON-NLS-2$
2130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'R', "13:59" }, //$NON-NLS-2$
2131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'R', "12:00" }, //$NON-NLS-2$
2132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'R', "12:00" }, //$NON-NLS-2$
2133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'S', "00" }, //$NON-NLS-2$
2134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'S', "47" }, //$NON-NLS-2$
2135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'S', "59" }, //$NON-NLS-2$
2136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'S', "07" }, //$NON-NLS-2$
2137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'S', "00" }, //$NON-NLS-2$
2138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'S', "00" }, //$NON-NLS-2$
2139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'T', "08:00:00" }, //$NON-NLS-2$
2140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'T', "15:18:47" }, //$NON-NLS-2$
2141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'T', "07:59:59" }, //$NON-NLS-2$
2142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'T', "13:59:07" }, //$NON-NLS-2$
2143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'T', "12:00:00" }, //$NON-NLS-2$
2144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'T', "12:00:00" }, //$NON-NLS-2$
2145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'Y', "1970" }, //$NON-NLS-2$
2146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'Y', "292278994" }, //$NON-NLS-2$
2147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'Y', "1970" }, //$NON-NLS-2$
2148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'Y', "2006" }, //$NON-NLS-2$
2149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'Y', "2006" }, //$NON-NLS-2$
2150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'Y', "2006" }, //$NON-NLS-2$
2151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'Z', "CST" }, //$NON-NLS-2$
2152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'Z', "CST" }, //$NON-NLS-2$
2153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'Z', "CST" }, //$NON-NLS-2$
2154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'Z', "CST" }, //$NON-NLS-2$
2155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'Z', "CEST" }, //$NON-NLS-2$
2156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'Z', "GMT-08:00" }, //$NON-NLS-2$
2157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
2159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] upperCaseFranceTriple = {
2161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'A', "jeudi" }, //$NON-NLS-2$
2162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'A', "dimanche" }, //$NON-NLS-2$
2163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'A', "jeudi" }, //$NON-NLS-2$
2164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'A', "jeudi" }, //$NON-NLS-2$
2165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'A', "lundi" }, //$NON-NLS-2$
2166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'A', "lundi" }, //$NON-NLS-2$
2167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'B', "janvier" }, //$NON-NLS-2$
2168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'B', "ao\u00fbt" }, //$NON-NLS-2$
2169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'B', "janvier" }, //$NON-NLS-2$
2170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'B', "mai" }, //$NON-NLS-2$
2171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'B', "mai" }, //$NON-NLS-2$
2172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'B', "mai" }, //$NON-NLS-2$
2173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'C', "19" }, //$NON-NLS-2$
2174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'C', "2922789" }, //$NON-NLS-2$
2175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'C', "19" }, //$NON-NLS-2$
2176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'C', "20" }, //$NON-NLS-2$
2177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'C', "20" }, //$NON-NLS-2$
2178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'C', "20" }, //$NON-NLS-2$
2179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'D', "01/01/70" }, //$NON-NLS-2$
2180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'D', "08/17/94" }, //$NON-NLS-2$
2181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'D', "01/01/70" }, //$NON-NLS-2$
2182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'D', "05/11/06" }, //$NON-NLS-2$
2183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'D', "05/08/06" }, //$NON-NLS-2$
2184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'D', "05/08/06" }, //$NON-NLS-2$
2185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'F', "1970-01-01" }, //$NON-NLS-2$
2186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'F', "292278994-08-17" }, //$NON-NLS-2$
2187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'F', "1970-01-01" }, //$NON-NLS-2$
2188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'F', "2006-05-11" }, //$NON-NLS-2$
2189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'F', "2006-05-08" }, //$NON-NLS-2$
2190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'F', "2006-05-08" }, //$NON-NLS-2$
2191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'H', "08" }, //$NON-NLS-2$
2192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'H', "15" }, //$NON-NLS-2$
2193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'H', "07" }, //$NON-NLS-2$
2194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'H', "13" }, //$NON-NLS-2$
2195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'H', "12" }, //$NON-NLS-2$
2196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'H', "12" }, //$NON-NLS-2$
2197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'I', "08" }, //$NON-NLS-2$
2198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'I', "03" }, //$NON-NLS-2$
2199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'I', "07" }, //$NON-NLS-2$
2200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'I', "01" }, //$NON-NLS-2$
2201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'I', "12" }, //$NON-NLS-2$
2202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'I', "12" }, //$NON-NLS-2$
2203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'L', "000" }, //$NON-NLS-2$
2204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'L', "807" }, //$NON-NLS-2$
2205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'L', "000" }, //$NON-NLS-2$
2206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'L', "578" }, //$NON-NLS-2$
2207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'L', "453" }, //$NON-NLS-2$
2208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'L', "609" }, //$NON-NLS-2$
2209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'M', "00" }, //$NON-NLS-2$
2210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'M', "18" }, //$NON-NLS-2$
2211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'M', "59" }, //$NON-NLS-2$
2212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'M', "59" }, //$NON-NLS-2$
2213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'M', "00" }, //$NON-NLS-2$
2214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'M', "00" }, //$NON-NLS-2$
2215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'N', "000000000" }, //$NON-NLS-2$
2216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'N', "807000000" }, //$NON-NLS-2$
2217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'N', "000000000" }, //$NON-NLS-2$
2218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'N', "578000000" }, //$NON-NLS-2$
2219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'N', "453000000" }, //$NON-NLS-2$
2220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'N', "468000000" }, //$NON-NLS-2$
2221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'Q', "0" }, //$NON-NLS-2$
2222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'Q', "9223372036854775807" }, //$NON-NLS-2$
2223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'Q', "-1000" }, //$NON-NLS-2$
2224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'Q', "1147327147578" }, //$NON-NLS-2$
2225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'Q', "1147082400453" }, //$NON-NLS-2$
2226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'Q', "1147118400609" }, //$NON-NLS-2$
2227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'R', "08:00" }, //$NON-NLS-2$
2228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'R', "15:18" }, //$NON-NLS-2$
2229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'R', "07:59" }, //$NON-NLS-2$
2230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'R', "13:59" }, //$NON-NLS-2$
2231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'R', "12:00" }, //$NON-NLS-2$
2232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'R', "12:00" }, //$NON-NLS-2$
2233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'S', "00" }, //$NON-NLS-2$
2234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'S', "47" }, //$NON-NLS-2$
2235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'S', "59" }, //$NON-NLS-2$
2236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'S', "07" }, //$NON-NLS-2$
2237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'S', "00" }, //$NON-NLS-2$
2238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'S', "00" }, //$NON-NLS-2$
2239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'T', "08:00:00" }, //$NON-NLS-2$
2240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'T', "15:18:47" }, //$NON-NLS-2$
2241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'T', "07:59:59" }, //$NON-NLS-2$
2242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'T', "13:59:07" }, //$NON-NLS-2$
2243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'T', "12:00:00" }, //$NON-NLS-2$
2244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'T', "12:00:00" }, //$NON-NLS-2$
2245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'Y', "1970" }, //$NON-NLS-2$
2246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'Y', "292278994" }, //$NON-NLS-2$
2247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'Y', "1970" }, //$NON-NLS-2$
2248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'Y', "2006" }, //$NON-NLS-2$
2249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'Y', "2006" }, //$NON-NLS-2$
2250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'Y', "2006" }, //$NON-NLS-2$
2251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'Z', "CST" }, //$NON-NLS-2$
2252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'Z', "CST" }, //$NON-NLS-2$
2253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'Z', "CST" }, //$NON-NLS-2$
2254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'Z', "CST" }, //$NON-NLS-2$
2255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'Z', "CEST" }, //$NON-NLS-2$
2256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'Z', "GMT-08:00" }, //$NON-NLS-2$
2257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
2259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] upperCaseJapanTriple = {
2261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'A', "\u6728\u66dc\u65e5" }, //$NON-NLS-2$
2262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'A', "\u65e5\u66dc\u65e5" }, //$NON-NLS-2$
2263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'A', "\u6728\u66dc\u65e5" }, //$NON-NLS-2$
2264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'A', "\u6728\u66dc\u65e5" }, //$NON-NLS-2$
2265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'A', "\u6708\u66dc\u65e5" }, //$NON-NLS-2$
2266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'A', "\u6708\u66dc\u65e5" }, //$NON-NLS-2$
2267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'B', "1\u6708" }, //$NON-NLS-2$
2268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'B', "8\u6708" }, //$NON-NLS-2$
2269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'B', "1\u6708" }, //$NON-NLS-2$
2270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'B', "5\u6708" }, //$NON-NLS-2$
2271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'B', "5\u6708" }, //$NON-NLS-2$
2272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'B', "5\u6708" }, //$NON-NLS-2$
2273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'C', "19" }, //$NON-NLS-2$
2274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'C', "2922789" }, //$NON-NLS-2$
2275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'C', "19" }, //$NON-NLS-2$
2276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'C', "20" }, //$NON-NLS-2$
2277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'C', "20" }, //$NON-NLS-2$
2278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'C', "20" }, //$NON-NLS-2$
2279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'D', "01/01/70" }, //$NON-NLS-2$
2280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'D', "08/17/94" }, //$NON-NLS-2$
2281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'D', "01/01/70" }, //$NON-NLS-2$
2282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'D', "05/11/06" }, //$NON-NLS-2$
2283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'D', "05/08/06" }, //$NON-NLS-2$
2284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'D', "05/08/06" }, //$NON-NLS-2$
2285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'F', "1970-01-01" }, //$NON-NLS-2$
2286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'F', "292278994-08-17" }, //$NON-NLS-2$
2287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'F', "1970-01-01" }, //$NON-NLS-2$
2288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'F', "2006-05-11" }, //$NON-NLS-2$
2289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'F', "2006-05-08" }, //$NON-NLS-2$
2290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'F', "2006-05-08" }, //$NON-NLS-2$
2291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'H', "08" }, //$NON-NLS-2$
2292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'H', "15" }, //$NON-NLS-2$
2293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'H', "07" }, //$NON-NLS-2$
2294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'H', "13" }, //$NON-NLS-2$
2295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'H', "12" }, //$NON-NLS-2$
2296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'H', "12" }, //$NON-NLS-2$
2297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'I', "08" }, //$NON-NLS-2$
2298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'I', "03" }, //$NON-NLS-2$
2299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'I', "07" }, //$NON-NLS-2$
2300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'I', "01" }, //$NON-NLS-2$
2301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'I', "12" }, //$NON-NLS-2$
2302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'I', "12" }, //$NON-NLS-2$
2303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'L', "000" }, //$NON-NLS-2$
2304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'L', "807" }, //$NON-NLS-2$
2305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'L', "000" }, //$NON-NLS-2$
2306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'L', "578" }, //$NON-NLS-2$
2307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'L', "453" }, //$NON-NLS-2$
2308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'L', "609" }, //$NON-NLS-2$
2309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'M', "00" }, //$NON-NLS-2$
2310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'M', "18" }, //$NON-NLS-2$
2311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'M', "59" }, //$NON-NLS-2$
2312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'M', "59" }, //$NON-NLS-2$
2313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'M', "00" }, //$NON-NLS-2$
2314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'M', "00" }, //$NON-NLS-2$
2315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'N', "000000000" }, //$NON-NLS-2$
2316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'N', "807000000" }, //$NON-NLS-2$
2317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'N', "000000000" }, //$NON-NLS-2$
2318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'N', "578000000" }, //$NON-NLS-2$
2319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'N', "453000000" }, //$NON-NLS-2$
2320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'N', "468000000" }, //$NON-NLS-2$
2321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'Q', "0" }, //$NON-NLS-2$
2322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'Q', "9223372036854775807" }, //$NON-NLS-2$
2323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'Q', "-1000" }, //$NON-NLS-2$
2324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'Q', "1147327147578" }, //$NON-NLS-2$
2325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'Q', "1147082400453" }, //$NON-NLS-2$
2326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'Q', "1147118400609" }, //$NON-NLS-2$
2327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'R', "08:00" }, //$NON-NLS-2$
2328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'R', "15:18" }, //$NON-NLS-2$
2329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'R', "07:59" }, //$NON-NLS-2$
2330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'R', "13:59" }, //$NON-NLS-2$
2331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'R', "12:00" }, //$NON-NLS-2$
2332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'R', "12:00" }, //$NON-NLS-2$
2333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'S', "00" }, //$NON-NLS-2$
2334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'S', "47" }, //$NON-NLS-2$
2335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'S', "59" }, //$NON-NLS-2$
2336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'S', "07" }, //$NON-NLS-2$
2337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'S', "00" }, //$NON-NLS-2$
2338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'S', "00" }, //$NON-NLS-2$
2339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'T', "08:00:00" }, //$NON-NLS-2$
2340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'T', "15:18:47" }, //$NON-NLS-2$
2341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'T', "07:59:59" }, //$NON-NLS-2$
2342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'T', "13:59:07" }, //$NON-NLS-2$
2343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'T', "12:00:00" }, //$NON-NLS-2$
2344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'T', "12:00:00" }, //$NON-NLS-2$
2345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'Y', "1970" }, //$NON-NLS-2$
2346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'Y', "292278994" }, //$NON-NLS-2$
2347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'Y', "1970" }, //$NON-NLS-2$
2348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'Y', "2006" }, //$NON-NLS-2$
2349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'Y', "2006" }, //$NON-NLS-2$
2350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'Y', "2006" }, //$NON-NLS-2$
2351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0L, 'Z', "CST" }, //$NON-NLS-2$
2352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Long.MAX_VALUE, 'Z', "CST" }, //$NON-NLS-2$
2353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1000L, 'Z', "CST" }, //$NON-NLS-2$
2354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new Date(1147327147578L), 'Z', "CST" }, //$NON-NLS-2$
2355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { paris, 'Z', "CEST" }, //$NON-NLS-2$
2356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { china, 'Z', "GMT-08:00" }, //$NON-NLS-2$
2357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
2358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 90; i++) {
2361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String formatSpecifier = "%t" + upperCaseGermanTriple[i][pattern]; //$NON-NLS-2$
2362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String formatSpecifierUpper = "%T" + upperCaseGermanTriple[i][pattern]; //$NON-NLS-2$
2363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if ((Character) upperCaseGermanTriple[i][pattern] == 'N') {
2364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // result can't be predicted on RI, so skip this test
2365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                continue;
2366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
2367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // test '%t'
2368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.JAPAN);
2369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(formatSpecifier, upperCaseJapanTriple[i][input]);
2370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
2371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + upperCaseJapanTriple[i][input], //$NON-NLS-2$
2372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    upperCaseJapanTriple[i][output], f.toString());
2373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.JAPAN);
2375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(Locale.GERMAN, formatSpecifier, upperCaseGermanTriple[i][input]);
2376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
2377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + upperCaseGermanTriple[i][input], //$NON-NLS-2$
2378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    upperCaseGermanTriple[i][output], f.toString());
2379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.JAPAN);
2381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(Locale.FRANCE, formatSpecifier, upperCaseFranceTriple[i][input]);
2382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifier //$NON-NLS-2$
2383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + upperCaseFranceTriple[i][input], //$NON-NLS-2$
2384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    upperCaseFranceTriple[i][output], f.toString());
2385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // test '%T'
2387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
2388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(formatSpecifierUpper, upperCaseGermanTriple[i][input]);
2389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
2390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + upperCaseGermanTriple[i][input], //$NON-NLS-2$
2391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    ((String) upperCaseGermanTriple[i][output])
2392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .toUpperCase(Locale.US), f.toString());
2393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
2395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(Locale.JAPAN, formatSpecifierUpper, upperCaseJapanTriple[i][input]);
2396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
2397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + upperCaseJapanTriple[i][input], //$NON-NLS-2$
2398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    ((String) upperCaseJapanTriple[i][output])
2399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .toUpperCase(Locale.US), f.toString());
2400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
2402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(Locale.FRANCE, formatSpecifierUpper, upperCaseFranceTriple[i][input]);
2403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Format pattern: " + formatSpecifierUpper //$NON-NLS-2$
2404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " Argument: " + upperCaseFranceTriple[i][input], //$NON-NLS-2$
2405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    ((String) upperCaseFranceTriple[i][output])
2406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .toUpperCase(Locale.US), f.toString());
2407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
2410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%-10ta", now); //$NON-NLS-2$
2411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Thu       ", f.toString()); //$NON-NLS-2$
2412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
2414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%10000000000000000000000000000000001ta", now); //$NON-NLS-2$
2415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Thu", f.toString().trim()); //$NON-NLS-2$
2416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for null argment for
2420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Byte/Short/Integer/Long/BigInteger conversion
2421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongNullConversion() {
2423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter(Locale.FRANCE);
2425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%d%<o%<x%<5X", (Integer) null);
2426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("nullnullnull NULL", f.toString());
2427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%d%<#03o %<0#4x%<6X", (Long) null);
2430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("nullnull null  NULL", f.toString());
2431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%(+,07d%<o %<x%<6X", (Byte) null);
2434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("   nullnull null  NULL", f.toString());
2435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.ITALY);
2437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%(+,07d%<o %<x%<0#6X", (Short) null);
2438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("   nullnull null  NULL", f.toString());
2439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%(+,-7d%<( o%<+(x %<( 06X", (BigInteger) null);
2442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("null   nullnull   NULL", f.toString());
2443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for legal
2447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * BigInteger conversion type 'd'
2448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$LBigInteger() {
2450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] tripleD = {
2451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%d", "123456789012345678901234567890" }, //$NON-NLS-2$
2452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%10d", "123456789012345678901234567890" }, //$NON-NLS-2$
2453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%-1d", "123456789012345678901234567890" }, //$NON-NLS-2$
2454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%+d", "+123456789012345678901234567890" }, //$NON-NLS-2$
2455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "% d", " 123456789012345678901234567890" }, //$NON-NLS-2$
2456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%,d", "123.456.789.012.345.678.901.234.567.890" }, //$NON-NLS-2$
2457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%(d", "123456789012345678901234567890" }, //$NON-NLS-2$
2458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%08d", "123456789012345678901234567890" }, //$NON-NLS-2$
2459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%-+,(11d", "+123.456.789.012.345.678.901.234.567.890" }, //$NON-NLS-2$
2460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%0 ,(11d", " 123.456.789.012.345.678.901.234.567.890" }, //$NON-NLS-2$
2461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%d", "-9876543210987654321098765432100000" }, //$NON-NLS-2$
2462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%10d", "-9876543210987654321098765432100000" }, //$NON-NLS-2$
2463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%-1d", "-9876543210987654321098765432100000" }, //$NON-NLS-2$
2464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%+d", "-9876543210987654321098765432100000" }, //$NON-NLS-2$
2465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "% d", "-9876543210987654321098765432100000" }, //$NON-NLS-2$
2466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%,d", "-9.876.543.210.987.654.321.098.765.432.100.000" }, //$NON-NLS-2$
2467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%(d", "(9876543210987654321098765432100000)" }, //$NON-NLS-2$
2468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%08d", "-9876543210987654321098765432100000" }, //$NON-NLS-2$
2469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%-+,(11d", "(9.876.543.210.987.654.321.098.765.432.100.000)" }, //$NON-NLS-2$
2470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%0 ,(11d", "(9.876.543.210.987.654.321.098.765.432.100.000)" }, //$NON-NLS-2$
2471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
2472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
2474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
2475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
2476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f;
2477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < tripleD.length; i++) {
2478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
2479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) tripleD[i][pattern],
2480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tripleD[i][input]);
2481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleD[i][input] + ",pattern["
2482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleD[i][pattern], tripleD[i][output], f
2483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString());
2484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] tripleO = {
2488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%o", "143564417755415637016711617605322" }, //$NON-NLS-2$
2489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%-6o", "143564417755415637016711617605322" }, //$NON-NLS-2$
2490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%08o", "143564417755415637016711617605322" }, //$NON-NLS-2$
2491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%#o", "0143564417755415637016711617605322" }, //$NON-NLS-2$
2492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%0#11o", "0143564417755415637016711617605322" }, //$NON-NLS-2$
2493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%-#9o", "0143564417755415637016711617605322" }, //$NON-NLS-2$
2494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%o", "-36336340043453651353467270113157312240" }, //$NON-NLS-2$
2495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%-6o", "-36336340043453651353467270113157312240" }, //$NON-NLS-2$
2496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%08o", "-36336340043453651353467270113157312240" }, //$NON-NLS-2$
2497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%#o", "-036336340043453651353467270113157312240" }, //$NON-NLS-2$
2498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%0#11o", "-036336340043453651353467270113157312240" }, //$NON-NLS-2$
2499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%-#9o", "-036336340043453651353467270113157312240" }, //$NON-NLS-2$
2500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
2501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < tripleO.length; i++) {
2502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.ITALY);
2503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) tripleO[i][pattern],
2504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tripleO[i][input]);
2505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleO[i][input] + ",pattern["
2506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleO[i][pattern], tripleO[i][output], f
2507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString());
2508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] tripleX = {
2512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%x", "18ee90ff6c373e0ee4e3f0ad2" }, //$NON-NLS-2$
2513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%-8x", "18ee90ff6c373e0ee4e3f0ad2" }, //$NON-NLS-2$
2514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%06x", "18ee90ff6c373e0ee4e3f0ad2" }, //$NON-NLS-2$
2515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%#x", "0x18ee90ff6c373e0ee4e3f0ad2" }, //$NON-NLS-2$
2516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%0#12x", "0x18ee90ff6c373e0ee4e3f0ad2" }, //$NON-NLS-2$
2517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("123456789012345678901234567890"), "%-#9x", "0x18ee90ff6c373e0ee4e3f0ad2" }, //$NON-NLS-2$
2518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%x", "-1e6f380472bd4bae6eb8259bd94a0" }, //$NON-NLS-2$
2519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%-8x", "-1e6f380472bd4bae6eb8259bd94a0" }, //$NON-NLS-2$
2520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%06x", "-1e6f380472bd4bae6eb8259bd94a0" }, //$NON-NLS-2$
2521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%#x", "-0x1e6f380472bd4bae6eb8259bd94a0" }, //$NON-NLS-2$
2522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%0#12x", "-0x1e6f380472bd4bae6eb8259bd94a0" }, //$NON-NLS-2$
2523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigInteger("-9876543210987654321098765432100000"), "%-#9x", "-0x1e6f380472bd4bae6eb8259bd94a0" }, //$NON-NLS-2$
2524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
2525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < tripleX.length; i++) {
2527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.FRANCE);
2528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) tripleX[i][pattern],
2529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tripleX[i][input]);
2530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleX[i][input] + ",pattern["
2531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleX[i][pattern], tripleX[i][output], f
2532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString());
2533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%(+,-7d%<( o%<+(x %<( 06X", (BigInteger) null);
2538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("null   nullnull   NULL", f.toString());
2539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for padding of
2543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * BigInteger conversion
2544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_BigIntegerPaddingConversion() {
2546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
2547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BigInteger bigInt = new BigInteger("123456789012345678901234567890");
2549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%32d", bigInt);
2551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("  123456789012345678901234567890", f.toString());
2552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%+32x", bigInt);
2555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("      +18ee90ff6c373e0ee4e3f0ad2", f.toString());
2556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("% 32o", bigInt);
2559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(" 143564417755415637016711617605322", f.toString());
2560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BigInteger negBigInt = new BigInteger(
2562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "-1234567890123456789012345678901234567890");
2563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%( 040X", negBigInt);
2565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("(000003A0C92075C0DBF3B8ACBC5F96CE3F0AD2)", f.toString());
2566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%+(045d", negBigInt);
2569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("(0001234567890123456789012345678901234567890)", f
2570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString());
2571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%+,-(60d", negBigInt);
2574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(
2575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "(1.234.567.890.123.456.789.012.345.678.901.234.567.890)     ",
2576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.toString());
2577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for BigInteger
2581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion exception
2582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_BigIntegerConversionException() {
2584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
2585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String[] flagsConversionMismatches = { "%#d", "%,o", "%,x", "%,X" };
2587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < flagsConversionMismatches.length; i++) {
2588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
2589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(Locale.CHINA);
2590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(flagsConversionMismatches[i], new BigInteger("1"));
2591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw FormatFlagsConversionMismatchException");
2592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (FormatFlagsConversionMismatchException e) {
2593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
2594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
2595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String[] missingFormatWidths = { "%-0d", "%0d", "%-d", "%-0o",
2598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%0o", "%-o", "%-0x", "%0x", "%-x", "%-0X", "%0X", "%-X" };
2599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < missingFormatWidths.length; i++) {
2600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
2601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(Locale.KOREA);
2602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(missingFormatWidths[i], new BigInteger("1"));
2603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw MissingFormatWidthException");
2604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (MissingFormatWidthException e) {
2605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
2606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
2607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String[] illFlags = { "%+ d", "%-08d", "%+ o", "%-08o", "%+ x",
2610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%-08x", "%+ X", "%-08X" };
2611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < illFlags.length; i++) {
2612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
2613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(Locale.CANADA);
2614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(illFlags[i], new BigInteger("1"));
2615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw IllegalFormatFlagsException");
2616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalFormatFlagsException e) {
2617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
2618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
2619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String[] precisionExceptions = { "%.4d", "%2.5o", "%8.6x",
2622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%11.17X" };
2623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < precisionExceptions.length; i++) {
2624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
2625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(Locale.US);
2626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(precisionExceptions[i], new BigInteger("1"));
2627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw IllegalFormatPrecisionException");
2628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalFormatPrecisionException e) {
2629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
2630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
2631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
2634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%D", new BigInteger("1"));
2636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
2637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
2638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
2639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
2642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%O", new BigInteger("1"));
2644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
2645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
2646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
2647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter();
2651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%010000000000000000000000000000000001d", new BigInteger(
2652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "1"));
2653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw MissingFormatWidthException");
2654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MissingFormatWidthException e) {
2655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
2656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for BigInteger
2661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * exception throwing order
2662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_BigIntegerExceptionOrder() {
2664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
2665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BigInteger big = new BigInteger("100");
2666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
2668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * Order summary: UnknownFormatConversionException >
2669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * MissingFormatWidthException > IllegalFormatFlagsException >
2670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * IllegalFormatPrecisionException > IllegalFormatConversionException >
2671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * FormatFlagsConversionMismatchException
2672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         *
2673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
2674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
2675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%(o", false);
2677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail();
2678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (FormatFlagsConversionMismatchException expected) {
2679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatConversionException expected) {
2680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%.4o", false);
2684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail();
2685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatPrecisionException expected) {
2686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatConversionException expected) {
2687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%+ .4o", big);
2691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail();
2692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatPrecisionException expected) {
2693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException expected) {
2694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%+ -o", big);
2698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail();
2699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MissingFormatWidthException expected) {
2700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException expected) {
2701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%-O", big);
2705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail();
2706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MissingFormatWidthException expected) {
2707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException expected) {
2708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for Float/Double
2713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion type 'e' and 'E'
2714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionE() {
2716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
2717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] tripleE = {
2718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%e", "0.000000e+00" },
2719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%#.0e", "0.e+00" },
2720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%#- (9.8e", " 0.00000000e+00" },
2721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%#+0(8.4e", "+0.0000e+00" },
2722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%-+(1.6e", "+0.000000e+00" },
2723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "% 0(12e", " 0.000000e+00" },
2724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 101f, "%e", "1.010000e+02" },
2726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 101f, "%#.0e", "1.e+02" },
2727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 101f, "%#- (9.8e", " 1.01000000e+02" },
2728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 101f, "%#+0(8.4e", "+1.0100e+02" },
2729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 101f, "%-+(1.6e", "+1.010000e+02" },
2730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 101f, "% 0(12e", " 1.010000e+02" },
2731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%e", "1.000000e+00" },
2733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%#.0e", "1.e+00" },
2734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%#- (9.8e", " 1.00000000e+00" },
2735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%#+0(8.4e", "+1.0000e+00" },
2736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%-+(1.6e", "+1.000000e+00" },
2737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "% 0(12e", " 1.000000e+00" },
2738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%e", "-9.800000e+01" },
2740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%#.0e", "-1.e+02" },
2741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%#- (9.8e", "(9.80000000e+01)" },
2742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%#+0(8.4e", "(9.8000e+01)" },
2743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%-+(1.6e", "(9.800000e+01)" },
2744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "% 0(12e", "(9.800000e+01)" },
2745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.23f, "%e", "1.230000e+00" },
2747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.23f, "%#.0e", "1.e+00" },
2748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.23f, "%#- (9.8e", " 1.23000002e+00" },
2749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.23f, "%#+0(8.4e", "+1.2300e+00" },
2750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.23f, "%-+(1.6e", "+1.230000e+00" },
2751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.23f, "% 0(12e", " 1.230000e+00" },
2752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 34.1234567f, "%e", "3.412346e+01" },
2754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 34.1234567f, "%#.0e", "3.e+01" },
2755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 34.1234567f, "%#- (9.8e", " 3.41234550e+01" },
2756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 34.1234567f, "%#+0(8.4e", "+3.4123e+01" },
2757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 34.1234567f, "%-+(1.6e", "+3.412346e+01" },
2758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 34.1234567f, "% 0(12e", " 3.412346e+01" },
2759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.12345f, "%e", "-1.234500e-01" },
2761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.12345f, "%#.0e", "-1.e-01" },
2762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.12345f, "%#- (9.8e", "(1.23450004e-01)" },
2763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.12345f, "%#+0(8.4e", "(1.2345e-01)" },
2764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.12345f, "%-+(1.6e", "(1.234500e-01)" },
2765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.12345f, "% 0(12e", "(1.234500e-01)" },
2766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -9876.1234567f, "%e", "-9.876123e+03" },
2768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -9876.1234567f, "%#.0e", "-1.e+04" },
2769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -9876.1234567f, "%#- (9.8e", "(9.87612305e+03)" },
2770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -9876.1234567f, "%#+0(8.4e", "(9.8761e+03)" },
2771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -9876.1234567f, "%-+(1.6e", "(9.876123e+03)" },
2772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -9876.1234567f, "% 0(12e", "(9.876123e+03)" },
2773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%e", "3.402823e+38" },
2775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%#.0e", "3.e+38" },
2776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%#- (9.8e", " 3.40282347e+38" },
2777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%#+0(8.4e", "+3.4028e+38" },
2778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%-+(1.6e", "+3.402823e+38" },
2779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "% 0(12e", " 3.402823e+38" },
2780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%e", "1.401298e-45" },
2782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%#.0e", "1.e-45" },
2783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%#- (9.8e", " 1.40129846e-45" },
2784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%#+0(8.4e", "+1.4013e-45" },
2785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%-+(1.6e", "+1.401298e-45" },
2786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "% 0(12e", " 1.401298e-45" },
2787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%e", "NaN" },
2789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%#.0e", "NaN" },
2790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%#- (9.8e", "NaN      " },
2791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%#+0(8.4e", "     NaN" },
2792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%-+(1.6e", "NaN" },
2793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "% 0(12e", "         NaN" },
2794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%e", "-Infinity" },
2797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%#.0e", "-Infinity" },
2798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%#- (9.8e", "(Infinity)" },
2799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%#+0(8.4e", "(Infinity)" },
2800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%-+(1.6e", "(Infinity)" },
2801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "% 0(12e", "  (Infinity)" },
2802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%e", "-Infinity" },
2804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%#.0e", "-Infinity" },
2805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%#- (9.8e", "(Infinity)" },
2806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%#+0(8.4e", "(Infinity)" },
2807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%-+(1.6e", "(Infinity)" },
2808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "% 0(12e", "  (Infinity)" },
2809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%e", "0.000000e+00" },
2811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%#.0e", "0.e+00" },
2812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%#- (9.8e", " 0.00000000e+00" },
2813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%#+0(8.4e", "+0.0000e+00" },
2814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%-+(1.6e", "+0.000000e+00" },
2815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "% 0(12e", " 0.000000e+00" },
2816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%e", "1.000000e+00" },
2818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%#.0e", "1.e+00" },
2819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%#- (9.8e", " 1.00000000e+00" },
2820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%#+0(8.4e", "+1.0000e+00" },
2821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%-+(1.6e", "+1.000000e+00" },
2822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "% 0(12e", " 1.000000e+00" },
2823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%e", "-1.000000e+00" },
2825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%#.0e", "-1.e+00" },
2826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%#- (9.8e", "(1.00000000e+00)" },
2827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%#+0(8.4e", "(1.0000e+00)" },
2828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%-+(1.6e", "(1.000000e+00)" },
2829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "% 0(12e", "(1.000000e+00)" },
2830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%e", "1.000000e-08" },
2833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%#.0e", "1.e-08" },
2834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%#- (9.8e", " 1.00000000e-08" },
2835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%#+0(8.4e", "+1.0000e-08" },
2836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%-+(1.6e", "+1.000000e-08" },
2837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "% 0(12e", " 1.000000e-08" },
2838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 9122.10d, "%e", "9.122100e+03" },
2840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 9122.10d, "%#.0e", "9.e+03" },
2841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 9122.10d, "%#- (9.8e", " 9.12210000e+03" },
2842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 9122.10d, "%#+0(8.4e", "+9.1221e+03" },
2843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 9122.10d, "%-+(1.6e", "+9.122100e+03" },
2844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 9122.10d, "% 0(12e", " 9.122100e+03" },
2845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%e", "1.000000e-01" },
2847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%#.0e", "1.e-01" },
2848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%#- (9.8e", " 1.00000000e-01" },
2849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%#+0(8.4e", "+1.0000e-01" },
2850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%-+(1.6e", "+1.000000e-01" },
2851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "% 0(12e", " 1.000000e-01" },
2852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%e", "-2.000000e+00" },
2854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%#.0e", "-2.e+00" },
2855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%#- (9.8e", "(2.00000000e+00)" },
2856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%#+0(8.4e", "(2.0000e+00)" },
2857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%-+(1.6e", "(2.000000e+00)" },
2858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "% 0(12e", "(2.000000e+00)" },
2859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.39d, "%e", "-3.900000e-01" },
2861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.39d, "%#.0e", "-4.e-01" },
2862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.39d, "%#- (9.8e", "(3.90000000e-01)" },
2863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.39d, "%#+0(8.4e", "(3.9000e-01)" },
2864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.39d, "%-+(1.6e", "(3.900000e-01)" },
2865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.39d, "% 0(12e", "(3.900000e-01)" },
2866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%e", "-1.234568e+09" },
2868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%#.0e", "-1.e+09" },
2869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%#- (9.8e", "(1.23456789e+09)" },
2870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%#+0(8.4e", "(1.2346e+09)" },
2871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%-+(1.6e", "(1.234568e+09)" },
2872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "% 0(12e", "(1.234568e+09)" },
2873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%e", "1.797693e+308" },
2875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%#.0e", "2.e+308" },
2876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%#- (9.8e", " 1.79769313e+308" },
2877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%#+0(8.4e", "+1.7977e+308" },
2878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%-+(1.6e", "+1.797693e+308" },
2879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "% 0(12e", " 1.797693e+308" },
2880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%e", "4.900000e-324" },
2882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%#.0e", "5.e-324" },
2883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%#- (9.8e", " 4.90000000e-324" },
2884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%#+0(8.4e", "+4.9000e-324" },
2885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%-+(1.6e", "+4.900000e-324" },
2886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "% 0(12e", " 4.900000e-324" },
2887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%e", "NaN" },
2889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%#.0e", "NaN" },
2890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%#- (9.8e", "NaN      " },
2891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%#+0(8.4e", "     NaN" },
2892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%-+(1.6e", "NaN" },
2893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "% 0(12e", "         NaN" },
2894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%e", "-Infinity" },
2896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%#.0e", "-Infinity" },
2897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%#- (9.8e", "(Infinity)" },
2898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%#+0(8.4e", "(Infinity)" },
2899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%-+(1.6e", "(Infinity)" },
2900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "% 0(12e", "  (Infinity)" },
2901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%e", "Infinity" },
2903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%#.0e", "Infinity" },
2904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%#- (9.8e", " Infinity" },
2905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%#+0(8.4e", "+Infinity" },
2906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%-+(1.6e", "+Infinity" },
2907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "% 0(12e", "    Infinity" },
2908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
2909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
2910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
2911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
2912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < tripleE.length; i++) {
2913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
2914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) tripleE[i][pattern], tripleE[i][input]);
2915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
2916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleE[i][pattern],
2917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tripleE[i][output], f.toString());
2918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // test for conversion type 'E'
2920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
2921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(((String) tripleE[i][pattern]).toUpperCase(), tripleE[i][input]);
2922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
2923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleE[i][pattern], ((String) tripleE[i][output])
2924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toUpperCase(Locale.UK), f.toString());
2925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
2928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%e", 1001f);
2929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
2930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * fail on RI, spec says 'e' requires the output to be formatted in
2931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * general scientific notation and the localization algorithm is
2932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * applied. But RI format this case to 1.001000e+03, which does not
2933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * conform to the German Locale
2934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
2935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1,001000e+03", f.toString());
2936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for Float/Double
2940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion type 'g' and 'G'
2941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionG() {
2943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
2944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] tripleG = {
2945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1001f, "%g", "1001.00" },
2946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1001f, "%- (,9.8g", " 1,001.0000" },
2947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1001f, "%+0(,8.4g", "+001,001" },
2948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1001f, "%-+(,1.6g", "+1,001.00" },
2949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1001f, "% 0(,12.0g", " 0000001e+03" },
2950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%g", "1.00000" },
2952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%- (,9.8g", " 1.0000000" },
2953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%+0(,8.4g", "+001.000" },
2954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%-+(,1.6g", "+1.00000" },
2955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "% 0(,12.0g", " 00000000001" },
2956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%g", "-98.0000" },
2958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%- (,9.8g", "(98.000000)" },
2959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%+0(,8.4g", "(098.00)" },
2960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%-+(,1.6g", "(98.0000)" },
2961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "% 0(,12.0g", "(000001e+02)" },
2962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "%g", "1.00000e-06" },
2964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "%- (,9.8g", " 1.0000000e-06" },
2965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "%+0(,8.4g", "+1.000e-06" },
2966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "%-+(,1.6g", "+1.00000e-06" },
2967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "% 0(,12.0g", " 0000001e-06" },
2968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%g", "345.123" },
2970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%- (,9.8g", " 345.12344" },
2971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%+0(,8.4g", "+00345.1" },
2972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%-+(,1.6g", "+345.123" },
2973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "% 0(,12.0g", " 0000003e+02" },
2974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "%g", "-1.23450e-07" },
2976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "%- (,9.8g", "(1.2344999e-07)" },
2977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "%+0(,8.4g", "(1.234e-07)" },
2978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "%-+(,1.6g", "(1.23450e-07)" },
2979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "% 0(,12.0g", "(000001e-07)" },
2980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987.1234567f, "%g", "-987.123" },
2982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987.1234567f, "%- (,9.8g", "(987.12347)" },
2983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987.1234567f, "%+0(,8.4g", "(0987.1)" },
2984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987.1234567f, "%-+(,1.6g", "(987.123)" },
2985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987.1234567f, "% 0(,12.0g", "(000001e+03)" },
2986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%g", "3.40282e+38" },
2988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%- (,9.8g", " 3.4028235e+38" },
2989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%+0(,8.4g", "+3.403e+38" },
2990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%-+(,1.6g", "+3.40282e+38" },
2991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "% 0(,12.0g", " 0000003e+38" },
2992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%g", "1.40130e-45" },
2994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%- (,9.8g", " 1.4012985e-45" },
2995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%+0(,8.4g", "+1.401e-45" },
2996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%-+(,1.6g", "+1.40130e-45" },
2997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "% 0(,12.0g", " 0000001e-45" },
2998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%g", "NaN" },
3000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%- (,9.8g", "NaN      " },
3001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%+0(,8.4g", "     NaN" },
3002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%-+(,1.6g", "NaN" },
3003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "% 0(,12.0g", "         NaN" },
3004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%g", "-Infinity" },
3006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%- (,9.8g", "(Infinity)" },
3007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%+0(,8.4g", "(Infinity)" },
3008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%-+(,1.6g", "(Infinity)" },
3009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "% 0(,12.0g", "  (Infinity)" },
3010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%g", "Infinity" },
3012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%- (,9.8g", " Infinity" },
3013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%+0(,8.4g", "+Infinity" },
3014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%-+(,1.6g", "+Infinity" },
3015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "% 0(,12.0g", "    Infinity" },
3016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%g", "1.00000" },
3018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%- (,9.8g", " 1.0000000" },
3019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%+0(,8.4g", "+001.000" },
3020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%-+(,1.6g", "+1.00000" },
3021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "% 0(,12.0g", " 00000000001" },
3022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%g", "-1.00000" },
3024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%- (,9.8g", "(1.0000000)" },
3025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%+0(,8.4g", "(01.000)" },
3026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%-+(,1.6g", "(1.00000)" },
3027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "% 0(,12.0g", "(0000000001)" },
3028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%g", "1.00000e-08" },
3030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%- (,9.8g", " 1.0000000e-08" },
3031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%+0(,8.4g", "+1.000e-08" },
3032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%-+(,1.6g", "+1.00000e-08" },
3033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "% 0(,12.0g", " 0000001e-08" },
3034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1912.10d, "%g", "1912.10" },
3036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1912.10d, "%- (,9.8g", " 1,912.1000" },
3037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1912.10d, "%+0(,8.4g", "+001,912" },
3038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1912.10d, "%-+(,1.6g", "+1,912.10" },
3039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1912.10d, "% 0(,12.0g", " 0000002e+03" },
3040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%g", "0.100000" },
3042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%- (,9.8g", " 0.10000000" },
3043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%+0(,8.4g", "+00.1000" },
3044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%-+(,1.6g", "+0.100000" },
3045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "% 0(,12.0g", " 000000000.1" },
3046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%g", "-2.00000" },
3048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%- (,9.8g", "(2.0000000)" },
3049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%+0(,8.4g", "(02.000)" },
3050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%-+(,1.6g", "(2.00000)" },
3051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "% 0(,12.0g", "(0000000002)" },
3052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00039d, "%g", "-0.000390000" },
3054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00039d, "%- (,9.8g", "(0.00039000000)" },
3055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00039d, "%+0(,8.4g", "(0.0003900)" },
3056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00039d, "%-+(,1.6g", "(0.000390000)" },
3057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00039d, "% 0(,12.0g", "(00000.0004)" },
3058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%g", "-1.23457e+09" },
3060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%- (,9.8g", "(1.2345679e+09)" },
3061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%+0(,8.4g", "(1.235e+09)" },
3062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%-+(,1.6g", "(1.23457e+09)" },
3063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "% 0(,12.0g", "(000001e+09)" },
3064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%g", "1.79769e+308" },
3066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%- (,9.8g", " 1.7976931e+308" },
3067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%+0(,8.4g", "+1.798e+308" },
3068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%-+(,1.6g", "+1.79769e+308" },
3069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "% 0(,12.0g", " 000002e+308" },
3070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%g", "4.90000e-324" },
3072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%- (,9.8g", " 4.9000000e-324" },
3073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%+0(,8.4g", "+4.900e-324" },
3074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%-+(,1.6g", "+4.90000e-324" },
3075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "% 0(,12.0g", " 000005e-324" },
3076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%g", "NaN" },
3078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%- (,9.8g", "NaN      " },
3079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%+0(,8.4g", "     NaN" },
3080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%-+(,1.6g", "NaN" },
3081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "% 0(,12.0g", "         NaN" },
3082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%g", "-Infinity" },
3084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%- (,9.8g", "(Infinity)" },
3085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%+0(,8.4g", "(Infinity)" },
3086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%-+(,1.6g", "(Infinity)" },
3087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "% 0(,12.0g", "  (Infinity)" },
3088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%g", "Infinity" },
3090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%- (,9.8g", " Infinity" },
3091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%+0(,8.4g", "+Infinity" },
3092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%-+(,1.6g", "+Infinity" },
3093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "% 0(,12.0g", "    Infinity" },
3094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
3096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
3097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
3098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
3099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < tripleG.length; i++) {
3100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) tripleG[i][pattern], tripleG[i][input]);
3103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
3104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleG[i][pattern],
3105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tripleG[i][output], f.toString());
3106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // test for conversion type 'G'
3108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(((String) tripleG[i][pattern]).toUpperCase(), tripleG[i][input]);
3110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
3111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleG[i][pattern], ((String) tripleG[i][output])
3112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toUpperCase(Locale.UK), f.toString());
3113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
3116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%.5g", 0f);
3117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("0.0000", f.toString());
3118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
3120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%.0g", 0f);
3121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
3122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * fail on RI, spec says if the precision is 0, then it is taken to be
3123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * 1. but RI throws ArrayIndexOutOfBoundsException.
3124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
3125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("0", f.toString());
3126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
3128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%g", 1001f);
3129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
3130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * fail on RI, spec says 'g' requires the output to be formatted in
3131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * general scientific notation and the localization algorithm is
3132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * applied. But RI format this case to 1001.00, which does not conform
3133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * to the German Locale
3134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
3135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1001,00", f.toString());
3136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
3139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for Float/Double
3140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion type 'g' and 'G' overflow
3141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
3142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionG_Overflow() {
3143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter();
3144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%g", 999999.5);
3145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1.00000e+06", f.toString());
3146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
3148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%g", 99999.5);
3149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("99999.5", f.toString());
3150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
3152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%.4g", 99.95);
3153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("99.95", f.toString());
3154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
3156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%g", 99.95);
3157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("99.9500", f.toString());
3158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
3160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%g", 0.9);
3161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("0.900000", f.toString());
3162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
3164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%.0g", 0.000095);
3165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("0.0001", f.toString());
3166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
3168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%g", 0.0999999);
3169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("0.0999999", f.toString());
3170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter();
3172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%g", 0.00009);
3173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("9.00000e-05", f.toString());
3174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
3177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for Float/Double
3178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion type 'f'
3179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
3180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionF() {
3181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
3182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] tripleF = {
3184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%f", "0,000000" },
3185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%#.3f", "0,000" },
3186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%,5f", "0,000000" },
3187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%- (12.0f", " 0          " },
3188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%#+0(1.6f", "+0,000000" },
3189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%-+(8.4f", "+0,0000 " },
3190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "% 0#(9.8f", " 0,00000000" },
3191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%f", "1234,000000" },
3193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%#.3f", "1234,000" },
3194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%,5f", "1.234,000000" },
3195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%- (12.0f", " 1234       " },
3196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%#+0(1.6f", "+1234,000000" },
3197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%-+(8.4f", "+1234,0000" },
3198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "% 0#(9.8f", " 1234,00000000" },
3199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%f", "1,000000" },
3201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%#.3f", "1,000" },
3202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%,5f", "1,000000" },
3203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%- (12.0f", " 1          " },
3204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%#+0(1.6f", "+1,000000" },
3205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%-+(8.4f", "+1,0000 " },
3206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "% 0#(9.8f", " 1,00000000" },
3207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%f", "-98,000000" },
3209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%#.3f", "-98,000" },
3210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%,5f", "-98,000000" },
3211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%- (12.0f", "(98)        " },
3212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%#+0(1.6f", "(98,000000)" },
3213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%-+(8.4f", "(98,0000)" },
3214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "% 0#(9.8f", "(98,00000000)" },
3215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "%f", "0,000001" },
3217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "%#.3f", "0,000" },
3218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "%,5f", "0,000001" },
3219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "%- (12.0f", " 0          " },
3220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "%#+0(1.6f", "+0,000001" },
3221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "%-+(8.4f", "+0,0000 " },
3222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.000001f, "% 0#(9.8f", " 0,00000100" },
3223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%f", "345,123444" },
3225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%#.3f", "345,123" },
3226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%,5f", "345,123444" },
3227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%- (12.0f", " 345        " },
3228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%#+0(1.6f", "+345,123444" },
3229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%-+(8.4f", "+345,1234" },
3230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "% 0#(9.8f", " 345,12344360" },
3231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "%f", "-0,000000" },
3233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "%#.3f", "-0,000" },
3234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "%,5f", "-0,000000" },
3235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "%- (12.0f", "(0)         " },
3236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "%#+0(1.6f", "(0,000000)" },
3237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "%-+(8.4f", "(0,0000)" },
3238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00000012345f, "% 0#(9.8f", "(0,00000012)" },
3239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%f", "-987654336,000000" },
3241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%#.3f", "-987654336,000" },
3242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%,5f", "-987.654.336,000000" },
3243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%- (12.0f", "(987654336) " },
3244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%#+0(1.6f", "(987654336,000000)" },
3245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%-+(8.4f", "(987654336,0000)" },
3246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "% 0#(9.8f", "(987654336,00000000)" },
3247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%f", "340282346638528860000000000000000000000,000000" },
3249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%#.3f", "340282346638528860000000000000000000000,000" },
3250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%,5f", "340.282.346.638.528.860.000.000.000.000.000.000.000,000000" },
3251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%- (12.0f", " 340282346638528860000000000000000000000" },
3252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%#+0(1.6f", "+340282346638528860000000000000000000000,000000" },
3253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%-+(8.4f", "+340282346638528860000000000000000000000,0000" },
3254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "% 0#(9.8f", " 340282346638528860000000000000000000000,00000000" },
3255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%f", "0,000000" },
3257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%#.3f", "0,000" },
3258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%,5f", "0,000000" },
3259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%- (12.0f", " 0          " },
3260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%#+0(1.6f", "+0,000000" },
3261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "%-+(8.4f", "+0,0000 " },
3262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MIN_VALUE, "% 0#(9.8f", " 0,00000000" },
3263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%f", "NaN" },
3265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%#.3f", "NaN" },
3266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%,5f", "  NaN" },
3267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%- (12.0f", "NaN         " },
3268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%#+0(1.6f", "NaN" },
3269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%-+(8.4f", "NaN     " },
3270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "% 0#(9.8f", "      NaN" },
3271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%f", "-Infinity" },
3273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%#.3f", "-Infinity" },
3274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%,5f", "-Infinity" },
3275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%- (12.0f", "(Infinity)  " },
3276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%#+0(1.6f", "(Infinity)" },
3277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%-+(8.4f", "(Infinity)" },
3278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "% 0#(9.8f", "(Infinity)" },
3279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%f", "Infinity" },
3281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%#.3f", "Infinity" },
3282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%,5f", "Infinity" },
3283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%- (12.0f", " Infinity   " },
3284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%#+0(1.6f", "+Infinity" },
3285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%-+(8.4f", "+Infinity" },
3286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "% 0#(9.8f", " Infinity" },
3287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%f", "0,000000" },
3290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%#.3f", "0,000" },
3291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%,5f", "0,000000" },
3292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%- (12.0f", " 0          " },
3293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%#+0(1.6f", "+0,000000" },
3294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%-+(8.4f", "+0,0000 " },
3295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "% 0#(9.8f", " 0,00000000" },
3296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%f", "1,000000" },
3298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%#.3f", "1,000" },
3299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%,5f", "1,000000" },
3300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%- (12.0f", " 1          " },
3301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%#+0(1.6f", "+1,000000" },
3302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%-+(8.4f", "+1,0000 " },
3303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "% 0#(9.8f", " 1,00000000" },
3304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%f", "-1,000000" },
3306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%#.3f", "-1,000" },
3307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%,5f", "-1,000000" },
3308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%- (12.0f", "(1)         " },
3309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%#+0(1.6f", "(1,000000)" },
3310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%-+(8.4f", "(1,0000)" },
3311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "% 0#(9.8f", "(1,00000000)" },
3312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%f", "0,000000" },
3314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%#.3f", "0,000" },
3315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%,5f", "0,000000" },
3316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%- (12.0f", " 0          " },
3317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%#+0(1.6f", "+0,000000" },
3318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%-+(8.4f", "+0,0000 " },
3319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "% 0#(9.8f", " 0,00000001" },
3320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1000.10d, "%f", "1000,100000" },
3322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1000.10d, "%#.3f", "1000,100" },
3323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1000.10d, "%,5f", "1.000,100000" },
3324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1000.10d, "%- (12.0f", " 1000       " },
3325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1000.10d, "%#+0(1.6f", "+1000,100000" },
3326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1000.10d, "%-+(8.4f", "+1000,1000" },
3327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1000.10d, "% 0#(9.8f", " 1000,10000000" },
3328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%f", "0,100000" },
3330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%#.3f", "0,100" },
3331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%,5f", "0,100000" },
3332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%- (12.0f", " 0          " },
3333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%#+0(1.6f", "+0,100000" },
3334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%-+(8.4f", "+0,1000 " },
3335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "% 0#(9.8f", " 0,10000000" },
3336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%f", "-2,000000" },
3338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%#.3f", "-2,000" },
3339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%,5f", "-2,000000" },
3340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%- (12.0f", "(2)         " },
3341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%#+0(1.6f", "(2,000000)" },
3342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%-+(8.4f", "(2,0000)" },
3343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "% 0#(9.8f", "(2,00000000)" },
3344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00009d, "%f", "-0,000090" },
3346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00009d, "%#.3f", "-0,000" },
3347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00009d, "%,5f", "-0,000090" },
3348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00009d, "%- (12.0f", "(0)         " },
3349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00009d, "%#+0(1.6f", "(0,000090)" },
3350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00009d, "%-+(8.4f", "(0,0001)" },
3351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00009d, "% 0#(9.8f", "(0,00009000)" },
3352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%f", "-1234567890,012346" },
3354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%#.3f", "-1234567890,012" },
3355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%,5f", "-1.234.567.890,012346" },
3356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%- (12.0f", "(1234567890)" },
3357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%#+0(1.6f", "(1234567890,012346)" },
3358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%-+(8.4f", "(1234567890,0123)" },
3359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "% 0#(9.8f", "(1234567890,01234580)" },
3360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%f", "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,000000" },
3362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%#.3f", "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,000" },
3363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%,5f", "179.769.313.486.231.570.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000,000000" },
3364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%- (12.0f", " 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" },
3365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%#+0(1.6f", "+179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,000000" },
3366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%-+(8.4f", "+179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,0000" },
3367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "% 0#(9.8f", " 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,00000000" },
3368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%f", "0,000000" },
3370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%#.3f", "0,000" },
3371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%,5f", "0,000000" },
3372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%- (12.0f", " 0          " },
3373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%#+0(1.6f", "+0,000000" },
3374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%-+(8.4f", "+0,0000 " },
3375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "% 0#(9.8f", " 0,00000000" },
3376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%f", "NaN" },
3378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%#.3f", "NaN" },
3379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%,5f", "  NaN" },
3380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%- (12.0f", "NaN         " },
3381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%#+0(1.6f", "NaN" },
3382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%-+(8.4f", "NaN     " },
3383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "% 0#(9.8f", "      NaN" },
3384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%f", "Infinity" },
3386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%#.3f", "Infinity" },
3387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%,5f", "Infinity" },
3388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%- (12.0f", " Infinity   " },
3389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%#+0(1.6f", "+Infinity" },
3390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%-+(8.4f", "+Infinity" },
3391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "% 0#(9.8f", " Infinity" },
3392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%f", "-Infinity" },
3394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%#.3f", "-Infinity" },
3395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%,5f", "-Infinity" },
3396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%- (12.0f", "(Infinity)  " },
3397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%#+0(1.6f", "(Infinity)" },
3398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%-+(8.4f", "(Infinity)" },
3399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "% 0#(9.8f", "(Infinity)" },
3400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
3401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
3402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
3403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
3404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < tripleF.length; i++) {
3405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.GERMAN);
3406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) tripleF[i][pattern], tripleF[i][input]);
3407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleF[i][input] + ",pattern["
3408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleF[i][pattern],
3409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tripleF[i][output], f.toString());
3410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
3414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for Float/Double
3415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion type 'a' and 'A'
3416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
3417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionA() {
3418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
3419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] tripleA = {
3420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0f, "%a", "-0x0.0p0" },
3421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0f, "%#.3a", "-0x0.000p0" },
3422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0f, "%5a", "-0x0.0p0" },
3423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0f, "%- 12.0a", "-0x0.0p0    " },
3424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0f, "%#+01.6a", "-0x0.000000p0" },
3425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0f, "%-+8.4a", "-0x0.0000p0" },
3426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%a", "0x0.0p0" },
3428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%#.3a", "0x0.000p0" },
3429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%5a", "0x0.0p0" },
3430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%- 12.0a", " 0x0.0p0    " },
3431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%#+01.6a", "+0x0.000000p0" },
3432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0f, "%-+8.4a", "+0x0.0000p0" },
3433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%a", "0x1.348p10" },
3435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%#.3a", "0x1.348p10" },
3436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%5a", "0x1.348p10" },
3437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%- 12.0a", " 0x1.3p10   " },
3438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%#+01.6a", "+0x1.348000p10" },
3439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1234f, "%-+8.4a", "+0x1.3480p10" },
3440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%a", "0x1.0p0" },
3442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%#.3a", "0x1.000p0" },
3443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%5a", "0x1.0p0" },
3444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%- 12.0a", " 0x1.0p0    " },
3445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%#+01.6a", "+0x1.000000p0" },
3446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1.f, "%-+8.4a", "+0x1.0000p0" },
3447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%a", "-0x1.88p6" },
3449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%#.3a", "-0x1.880p6" },
3450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%5a", "-0x1.88p6" },
3451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%- 12.0a", "-0x1.8p6    " },
3452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%#+01.6a", "-0x1.880000p6" },
3453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -98f, "%-+8.4a", "-0x1.8800p6" },
3454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%a", "0x1.591f9ap8" },
3456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%5a", "0x1.591f9ap8" },
3457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 345.1234567f, "%#+01.6a", "+0x1.591f9ap8" },
3458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%a", "-0x1.d6f346p29" },
3460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%#.3a", "-0x1.d6fp29" },
3461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%5a", "-0x1.d6f346p29" },
3462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%- 12.0a", "-0x1.dp29   " },
3463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%#+01.6a", "-0x1.d6f346p29" },
3464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -987654321.1234567f, "%-+8.4a", "-0x1.d6f3p29" },
3465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%a", "0x1.fffffep127" },
3467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%5a", "0x1.fffffep127" },
3468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.MAX_VALUE, "%#+01.6a", "+0x1.fffffep127" },
3469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%a", "NaN" },
3471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%#.3a", "NaN" },
3472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%5a", "  NaN" },
3473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%- 12.0a", "NaN         " },
3474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%#+01.6a", "NaN" },
3475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NaN, "%-+8.4a", "NaN     " },
3476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%a", "-Infinity" },
3478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%#.3a", "-Infinity" },
3479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%5a", "-Infinity" },
3480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%- 12.0a", "-Infinity   " },
3481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%#+01.6a", "-Infinity" },
3482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.NEGATIVE_INFINITY, "%-+8.4a", "-Infinity" },
3483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%a", "Infinity" },
3485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%#.3a", "Infinity" },
3486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%5a", "Infinity" },
3487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%- 12.0a", " Infinity   " },
3488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%#+01.6a", "+Infinity" },
3489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Float.POSITIVE_INFINITY, "%-+8.4a", "+Infinity" },
3490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0d, "%a", "-0x0.0p0" },
3492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0d, "%#.3a", "-0x0.000p0" },
3493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0d, "%5a", "-0x0.0p0" },
3494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0d, "%- 12.0a", "-0x0.0p0    " },
3495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0d, "%#+01.6a", "-0x0.000000p0" },
3496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -0d, "%-+8.4a", "-0x0.0000p0" },
3497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%a", "0x0.0p0" },
3499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%#.3a", "0x0.000p0" },
3500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%5a", "0x0.0p0" },
3501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%- 12.0a", " 0x0.0p0    " },
3502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%#+01.6a", "+0x0.000000p0" },
3503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0d, "%-+8.4a", "+0x0.0000p0" },
3504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%a", "0x1.0p0" },
3506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%#.3a", "0x1.000p0" },
3507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%5a", "0x1.0p0" },
3508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%- 12.0a", " 0x1.0p0    " },
3509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%#+01.6a", "+0x1.000000p0" },
3510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1d, "%-+8.4a", "+0x1.0000p0" },
3511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%a", "-0x1.0p0" },
3513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%#.3a", "-0x1.000p0" },
3514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%5a", "-0x1.0p0" },
3515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%- 12.0a", "-0x1.0p0    " },
3516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%#+01.6a", "-0x1.000000p0" },
3517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1d, "%-+8.4a", "-0x1.0000p0" },
3518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%a", "0x1.5798ee2308c3ap-27" },
3520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%5a", "0x1.5798ee2308c3ap-27" },
3521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%- 12.0a", " 0x1.5p-27  " },
3522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { .00000001d, "%#+01.6a", "+0x1.5798eep-27" },
3523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1000.10d, "%a", "0x1.f40cccccccccdp9" },
3525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1000.10d, "%5a", "0x1.f40cccccccccdp9" },
3526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 1000.10d, "%- 12.0a", " 0x1.fp9    " },
3527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%a", "0x1.999999999999ap-4" },
3529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { 0.1d, "%5a", "0x1.999999999999ap-4" },
3530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%a", "-0x1.0p1" },
3532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%#.3a", "-0x1.000p1" },
3533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%5a", "-0x1.0p1" },
3534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%- 12.0a", "-0x1.0p1    " },
3535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%#+01.6a", "-0x1.000000p1" },
3536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -2.d, "%-+8.4a", "-0x1.0000p1" },
3537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00009d, "%a", "-0x1.797cc39ffd60fp-14" },
3539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -.00009d, "%5a", "-0x1.797cc39ffd60fp-14" },
3540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%a", "-0x1.26580b480ca46p30" },
3542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%5a", "-0x1.26580b480ca46p30" },
3543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%- 12.0a", "-0x1.2p30   " },
3544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%#+01.6a", "-0x1.26580bp30" },
3545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { -1234567890.012345678d, "%-+8.4a", "-0x1.2658p30" },
3546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%a", "0x1.fffffffffffffp1023" },
3548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MAX_VALUE, "%5a", "0x1.fffffffffffffp1023" },
3549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%a", "0x0.0000000000001p-1022" },
3551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.MIN_VALUE, "%5a", "0x0.0000000000001p-1022" },
3552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%a", "NaN" },
3554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%#.3a", "NaN" },
3555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%5a", "  NaN" },
3556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%- 12.0a", "NaN         " },
3557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%#+01.6a", "NaN" },
3558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NaN, "%-+8.4a", "NaN     " },
3559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%a", "-Infinity" },
3561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%#.3a", "-Infinity" },
3562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%5a", "-Infinity" },
3563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%- 12.0a", "-Infinity   " },
3564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%#+01.6a", "-Infinity" },
3565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.NEGATIVE_INFINITY, "%-+8.4a", "-Infinity" },
3566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%a", "Infinity" },
3568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%#.3a", "Infinity" },
3569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%5a", "Infinity" },
3570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%- 12.0a", " Infinity   " },
3571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%#+01.6a", "+Infinity" },
3572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { Double.POSITIVE_INFINITY, "%-+8.4a", "+Infinity" },
3573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
3575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
3576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
3577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
3578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < tripleA.length; i++) {
3579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.UK);
3580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) tripleA[i][pattern], tripleA[i][input]);
3581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleA[i][input] + ",pattern["
3582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleA[i][pattern],
3583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tripleA[i][output], f.toString());
3584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // test for conversion type 'A'
3586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.UK);
3587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(((String) tripleA[i][pattern]).toUpperCase(), tripleA[i][input]);
3588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleA[i][input] + ",pattern["
3589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleA[i][pattern], ((String) tripleA[i][output])
3590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toUpperCase(Locale.UK), f.toString());
3591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
3595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for BigDecimal
3596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion type 'e' and 'E'
3597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
3598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalConversionE() {
3599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
3600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] tripleE = {
3601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%e", "0.000000e+00" },
3602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%#.0e", "0.e+00" },
3603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%# 9.8e", " 0.00000000e+00" },
3604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%#+0(8.4e", "+0.0000e+00" },
3605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%-+17.6e", "+0.000000e+00    " },
3606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "% 0(20e", " 00000000.000000e+00" },
3607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%e", "1.000000e+00" },
3609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%#.0e", "1.e+00" },
3610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%# 9.8e", " 1.00000000e+00" },
3611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%#+0(8.4e", "+1.0000e+00" },
3612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%-+17.6e", "+1.000000e+00    " },
3613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "% 0(20e", " 00000001.000000e+00" },
3614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%e", "1.000000e+01" },
3616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%#.0e", "1.e+01" },
3617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%# 9.8e", " 1.00000000e+01" },
3618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%#+0(8.4e", "+1.0000e+01" },
3619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%-+17.6e", "+1.000000e+01    " },
3620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "% 0(20e", " 00000001.000000e+01" },
3621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%e", "-1.000000e+00" },
3623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%#.0e", "-1.e+00" },
3624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%# 9.8e", "-1.00000000e+00" },
3625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%#+0(8.4e", "(1.0000e+00)" },
3626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%-+17.6e", "-1.000000e+00    " },
3627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "% 0(20e", "(0000001.000000e+00)" },
3628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "%e", "5.000000e+999" },
3630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "%#.0e", "5.e+999" },
3631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "%# 9.8e", " 5.00000000e+999" },
3632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "%#+0(8.4e", "+5.0000e+999" },
3633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "%-+17.6e", "+5.000000e+999   " },
3634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "% 0(20e", " 0000005.000000e+999" },
3635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "%e", "-5.000000e+999" },
3637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "%#.0e", "-5.e+999" },
3638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "%# 9.8e", "-5.00000000e+999" },
3639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "%#+0(8.4e", "(5.0000e+999)" },
3640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "%-+17.6e", "-5.000000e+999   " },
3641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "% 0(20e", "(000005.000000e+999)" },
3642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
3643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
3644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
3645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
3646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < tripleE.length; i++) {
3647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) tripleE[i][pattern], tripleE[i][input]);
3649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
3650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleE[i][pattern],
3651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tripleE[i][output], f.toString());
3652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // test for conversion type 'E'
3654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(((String) tripleE[i][pattern]).toUpperCase(), tripleE[i][input]);
3656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleE[i][input] + ",pattern["
3657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleE[i][pattern], ((String) tripleE[i][output])
3658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toUpperCase(Locale.US), f.toString());
3659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
3663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for BigDecimal
3664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion type 'g' and 'G'
3665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
3666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalConversionG() {
3667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
3668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] tripleG = {
3669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%g", "0.00000" },
3670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%.5g", "0.0000" },
3671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%- (,9.8g", " 0.0000000" },
3672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%+0(,8.4g", "+000.000" },
3673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%-+10.6g", "+0.00000  " },
3674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "% 0(,12.0g", " 00000000000" },
3675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%g", "1.00000" },
3676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%.5g", "1.0000" },
3677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%- (,9.8g", " 1.0000000" },
3678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%+0(,8.4g", "+001.000" },
3679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%-+10.6g", "+1.00000  " },
3680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "% 0(,12.0g", " 00000000001" },
3681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%g", "-1.00000" },
3683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%.5g", "-1.0000" },
3684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%- (,9.8g", "(1.0000000)" },
3685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%+0(,8.4g", "(01.000)" },
3686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%-+10.6g", "-1.00000  " },
3687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "% 0(,12.0g", "(0000000001)" },
3688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.000001), "%g", "-1.00000e-06" },
3690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.000001), "%.5g", "-1.0000e-06" },
3691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.000001), "%- (,9.8g", "(1.0000000e-06)" },
3692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.000001), "%+0(,8.4g", "(1.000e-06)" },
3693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.000001), "%-+10.6g", "-1.00000e-06" },
3694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.000001), "% 0(,12.0g", "(000001e-06)" },
3695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(0.0002), "%g", "0.000200000" },
3697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(0.0002), "%.5g", "0.00020000" },
3698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(0.0002), "%- (,9.8g", " 0.00020000000" },
3699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(0.0002), "%+0(,8.4g", "+0.0002000" },
3700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(0.0002), "%-+10.6g", "+0.000200000" },
3701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(0.0002), "% 0(,12.0g", " 000000.0002" },
3702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.003), "%g", "-0.00300000" },
3704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.003), "%.5g", "-0.0030000" },
3705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.003), "%- (,9.8g", "(0.0030000000)" },
3706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.003), "%+0(,8.4g", "(0.003000)" },
3707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.003), "%-+10.6g", "-0.00300000" },
3708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-0.003), "% 0(,12.0g", "(000000.003)" },
3709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "%g", "5.00000e+999" },
3711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "%.5g", "5.0000e+999" },
3712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "%- (,9.8g", " 5.0000000e+999" },
3713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "%+0(,8.4g", "+5.000e+999" },
3714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "%-+10.6g", "+5.00000e+999" },
3715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("5.000E999"), "% 0(,12.0g", " 000005e+999" },
3716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "%g", "-5.00000e+999" },
3718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "%.5g", "-5.0000e+999" },
3719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "%- (,9.8g", "(5.0000000e+999)" },
3720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "%+0(,8.4g", "(5.000e+999)" },
3721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "%-+10.6g", "-5.00000e+999" },
3722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-5.000E999"), "% 0(,12.0g", "(00005e+999)" },
3723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
3724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
3725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
3726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
3727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < tripleG.length; i++) {
3728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) tripleG[i][pattern], tripleG[i][input]);
3730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
3731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleG[i][pattern],
3732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tripleG[i][output], f.toString());
3733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // test for conversion type 'G'
3735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format(((String) tripleG[i][pattern]).toUpperCase(), tripleG[i][input]);
3737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleG[i][input] + ",pattern["
3738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleG[i][pattern], ((String) tripleG[i][output])
3739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toUpperCase(Locale.US), f.toString());
3740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
3743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%- (,9.6g", new BigDecimal("4E6"));
3744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
3745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * fail on RI, spec says 'g' requires the output to be formatted in
3746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * general scientific notation and the localization algorithm is
3747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * applied. But RI format this case to 4.00000e+06, which does not
3748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * conform to the German Locale
3749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
3750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(" 4,00000e+06", f.toString());
3751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
3754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for BigDecimal
3755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * conversion type 'f'
3756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
3757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalConversionF() {
3758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
3760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int input = 0;
3761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int pattern = 1;
3762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final int output = 2;
3763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[][] tripleF = {
3764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%f", "0.000000" },
3765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%#.3f", "0.000" },
3766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%#,5f", "0.000000" },
3767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%- #(12.0f", " 0.         " },
3768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%#+0(1.6f", "+0.000000" },
3769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "%-+(8.4f", "+0.0000 " },
3770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ZERO, "% 0#(9.8f", " 0.00000000" },
3771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%f", "1.000000" },
3772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%#.3f", "1.000" },
3773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%#,5f", "1.000000" },
3774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%- #(12.0f", " 1.         " },
3775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%#+0(1.6f", "+1.000000" },
3776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "%-+(8.4f", "+1.0000 " },
3777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.ONE, "% 0#(9.8f", " 1.00000000" },
3778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%f", "10.000000" },
3779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%#.3f", "10.000" },
3780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%#,5f", "10.000000" },
3781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%- #(12.0f", " 10.        " },
3782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%#+0(1.6f", "+10.000000" },
3783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "%-+(8.4f", "+10.0000" },
3784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { BigDecimal.TEN, "% 0#(9.8f", " 10.00000000" },
3785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%f", "-1.000000" },
3786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%#.3f", "-1.000" },
3787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%#,5f", "-1.000000" },
3788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%- #(12.0f", "(1.)        " },
3789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%#+0(1.6f", "(1.000000)" },
3790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "%-+(8.4f", "(1.0000)" },
3791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal(-1), "% 0#(9.8f", "(1.00000000)" },
3792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("9999999999999999999999999999999999999999999"), "%f", "9999999999999999999999999999999999999999999.000000" },
3793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("9999999999999999999999999999999999999999999"), "%#.3f", "9999999999999999999999999999999999999999999.000" },
3794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("9999999999999999999999999999999999999999999"), "%#,5f", "9,999,999,999,999,999,999,999,999,999,999,999,999,999,999.000000" },
3795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("9999999999999999999999999999999999999999999"), "%- #(12.0f", " 9999999999999999999999999999999999999999999." },
3796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("9999999999999999999999999999999999999999999"), "%#+0(1.6f", "+9999999999999999999999999999999999999999999.000000" },
3797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("9999999999999999999999999999999999999999999"), "%-+(8.4f", "+9999999999999999999999999999999999999999999.0000" },
3798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("9999999999999999999999999999999999999999999"), "% 0#(9.8f", " 9999999999999999999999999999999999999999999.00000000" },
3799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-9999999999999999999999999999999999999999999"), "%f", "-9999999999999999999999999999999999999999999.000000" },
3800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-9999999999999999999999999999999999999999999"), "%#.3f", "-9999999999999999999999999999999999999999999.000" },
3801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-9999999999999999999999999999999999999999999"), "%#,5f", "-9,999,999,999,999,999,999,999,999,999,999,999,999,999,999.000000" },
3802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-9999999999999999999999999999999999999999999"), "%- #(12.0f", "(9999999999999999999999999999999999999999999.)" },
3803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-9999999999999999999999999999999999999999999"), "%#+0(1.6f", "(9999999999999999999999999999999999999999999.000000)" },
3804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-9999999999999999999999999999999999999999999"), "%-+(8.4f", "(9999999999999999999999999999999999999999999.0000)" },
3805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                { new BigDecimal("-9999999999999999999999999999999999999999999"), "% 0#(9.8f", "(9999999999999999999999999999999999999999999.00000000)" },
3806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
3807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < tripleF.length; i++) {
3808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format((String) tripleF[i][pattern], tripleF[i][input]);
3810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("triple[" + i + "]:" + tripleF[i][input] + ",pattern["
3811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + i + "]:" + tripleF[i][pattern], tripleF[i][output], f.toString());
3812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
3815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%f", new BigDecimal("5.0E9"));
3816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // error on RI
3817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // RI throw ArrayIndexOutOfBoundsException
3818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5000000000.000000", f.toString());
3819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
3822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for exceptions in
3823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Float/Double/BigDecimal conversion type 'e', 'E', 'g', 'G', 'f', 'a', 'A'
3824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
3825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatDoubleBigDecimalConversionException() {
3826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
3827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final char[] conversions = { 'e', 'E', 'g', 'G', 'f', 'a', 'A' };
3829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final Object[] illArgs = { false, (byte) 1, (short) 2, 3, (long) 4,
3830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new BigInteger("5"), new Character('c'), new Object(),
3831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Date() };
3832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < illArgs.length; i++) {
3833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int j = 0; j < conversions.length; j++) {
3834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
3835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    f = new Formatter(Locale.UK);
3836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    f.format("%" + conversions[j], illArgs[i]);
3837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw IllegalFormatConversionException");
3838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (IllegalFormatConversionException e) {
3839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // expected
3840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
3841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.UK);
3846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%a", new BigDecimal(1));
3847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatConversionException");
3848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatConversionException e) {
3849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
3850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.UK);
3854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%A", new BigDecimal(1));
3855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatConversionException");
3856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatConversionException e) {
3857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
3858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String[] flagsConversionMismatches = { "%,e", "%,E", "%#g",
3861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%#G", "%,a", "%,A", "%(a", "%(A" };
3862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < flagsConversionMismatches.length; i++) {
3863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
3864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(Locale.CHINA);
3865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(flagsConversionMismatches[i], new BigDecimal(1));
3866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw FormatFlagsConversionMismatchException");
3867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (FormatFlagsConversionMismatchException e) {
3868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
3869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
3871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(Locale.JAPAN);
3872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(flagsConversionMismatches[i], (BigDecimal) null);
3873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw FormatFlagsConversionMismatchException");
3874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (FormatFlagsConversionMismatchException e) {
3875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
3876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String[] missingFormatWidths = { "%-0e", "%0e", "%-e", "%-0E",
3880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%0E", "%-E", "%-0g", "%0g", "%-g", "%-0G", "%0G", "%-G",
3881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%-0f", "%0f", "%-f", "%-0a", "%0a", "%-a", "%-0A", "%0A",
3882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%-A" };
3883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < missingFormatWidths.length; i++) {
3884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
3885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(Locale.KOREA);
3886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(missingFormatWidths[i], 1f);
3887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw MissingFormatWidthException");
3888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (MissingFormatWidthException e) {
3889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
3890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
3893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(Locale.KOREA);
3894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(missingFormatWidths[i], (Float) null);
3895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw MissingFormatWidthException");
3896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (MissingFormatWidthException e) {
3897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
3898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String[] illFlags = { "%+ e", "%+ E", "%+ g", "%+ G", "%+ f",
3902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%+ a", "%+ A", "%-03e", "%-03E", "%-03g", "%-03G", "%-03f",
3903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "%-03a", "%-03A" };
3904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < illFlags.length; i++) {
3905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
3906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(Locale.CANADA);
3907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(illFlags[i], 1.23d);
3908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw IllegalFormatFlagsException");
3909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalFormatFlagsException e) {
3910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
3911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
3914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new Formatter(Locale.CANADA);
3915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.format(illFlags[i], (Double) null);
3916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw IllegalFormatFlagsException");
3917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalFormatFlagsException e) {
3918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // expected
3919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.US);
3923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%F", 1);
3925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
3926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
3927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
3928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
3932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for
3933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Float/Double/BigDecimal exception throwing order
3934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
3935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatDoubleBigDecimalExceptionOrder() {
3936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
3937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
3939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * Summary: UnknownFormatConversionException >
3940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * MissingFormatWidthException > IllegalFormatFlagsException >
3941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * FormatFlagsConversionMismatchException >
3942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * IllegalFormatConversionException
3943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         *
3944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
3945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // compare FormatFlagsConversionMismatchException and
3947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // IllegalFormatConversionException
3948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%,e", (byte) 1);
3950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw FormatFlagsConversionMismatchException");
3951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (FormatFlagsConversionMismatchException e) {
3952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
3953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // compare IllegalFormatFlagsException and
3957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // FormatFlagsConversionMismatchException
3958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%+ ,e", 1f);
3960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatFlagsException");
3961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException e) {
3962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
3963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // compare MissingFormatWidthException and
3967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // IllegalFormatFlagsException
3968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%+ -e", 1f);
3970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw MissingFormatWidthException");
3971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MissingFormatWidthException e) {
3972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
3973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // compare UnknownFormatConversionException and
3977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // MissingFormatWidthException
3978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
3979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%-F", 1f);
3980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
3981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
3982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
3983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
3987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for BigDecimal
3988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * exception throwing order
3989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
3990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalExceptionOrder() {
3991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
3992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BigDecimal bd = new BigDecimal("1.0");
3993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /*
3995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * Summary: UnknownFormatConversionException >
3996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * MissingFormatWidthException > IllegalFormatFlagsException >
3997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * FormatFlagsConversionMismatchException >
3998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         * IllegalFormatConversionException
3999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         *
4000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath         */
4001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
4002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // compare FormatFlagsConversionMismatchException and
4003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // IllegalFormatConversionException
4004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
4005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%,e", (byte) 1);
4006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw FormatFlagsConversionMismatchException");
4007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (FormatFlagsConversionMismatchException e) {
4008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
4009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
4012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // compare IllegalFormatFlagsException and
4013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // FormatFlagsConversionMismatchException
4014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
4015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%+ ,e", bd);
4016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalFormatFlagsException");
4017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalFormatFlagsException e) {
4018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
4019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
4022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // compare MissingFormatWidthException and
4023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // IllegalFormatFlagsException
4024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
4025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%+ -e", bd);
4026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw MissingFormatWidthException");
4027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MissingFormatWidthException e) {
4028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
4029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // compare UnknownFormatConversionException and
4032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // MissingFormatWidthException
4033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
4034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new Formatter(Locale.US);
4035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.format("%-F", bd);
4036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw UnknownFormatConversionException");
4037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (UnknownFormatConversionException e) {
4038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
4039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
4043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter#format(String, Object...) for null argment for
4044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Float/Double/BigDecimal conversion
4045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
4046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_formatLjava_lang_String$Ljava_lang_Object_FloatDoubleBigDecimalNullConversion() {
4047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = null;
4048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test (Float)null
4050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.FRANCE);
4051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%#- (9.0e", (Float) null);
4052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("         ", f.toString());
4053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
4055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%-+(1.6E", (Float) null);
4056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("NULL", f.toString());
4057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.UK);
4059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%+0(,8.4g", (Float) null);
4060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("    null", f.toString());
4061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.FRANCE);
4063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%- (9.8G", (Float) null);
4064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("NULL     ", f.toString());
4065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.FRANCE);
4067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%- (12.1f", (Float) null);
4068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("n           ", f.toString());
4069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.FRANCE);
4071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("% .4a", (Float) null);
4072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("null", f.toString());
4073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.FRANCE);
4075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%06A", (Float) null);
4076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("  NULL", f.toString());
4077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test (Double)null
4079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
4080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%- (9e", (Double) null);
4081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("null     ", f.toString());
4082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
4084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%#-+(1.6E", (Double) null);
4085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("NULL", f.toString());
4086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
4088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%+0(6.4g", (Double) null);
4089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("  null", f.toString());
4090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
4092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%- (,5.8G", (Double) null);
4093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("NULL ", f.toString());
4094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
4096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("% (.4f", (Double) null);
4097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("null", f.toString());
4098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
4100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%#.6a", (Double) null);
4101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("null", f.toString());
4102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.GERMAN);
4104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("% 2.5A", (Double) null);
4105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("NULL", f.toString());
4106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test (BigDecimal)null
4108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.UK);
4109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%#- (6.2e", (BigDecimal) null);
4110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("nu    ", f.toString());
4111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.UK);
4113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%-+(1.6E", (BigDecimal) null);
4114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("NULL", f.toString());
4115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.UK);
4117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%+-(,5.3g", (BigDecimal) null);
4118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("nul  ", f.toString());
4119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.UK);
4121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%0 3G", (BigDecimal) null);
4122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("NULL", f.toString());
4123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.UK);
4125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%0 (9.0G", (BigDecimal) null);
4126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("         ", f.toString());
4127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.UK);
4129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("% (.5f", (BigDecimal) null);
4130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("null", f.toString());
4131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.UK);
4133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%06a", (BigDecimal) null);
4134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("  null", f.toString());
4135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new Formatter(Locale.UK);
4137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("% .5A", (BigDecimal) null);
4138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("NULL", f.toString());
4139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
4142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter.BigDecimalLayoutForm#values()
4143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
4144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_values() {
4145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BigDecimalLayoutForm[] vals = BigDecimalLayoutForm.values();
4146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Invalid length of enum values", 2, vals.length);
4147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong scientific value in enum", BigDecimalLayoutForm.SCIENTIFIC, vals[0]);
4148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong dec float value in enum", BigDecimalLayoutForm.DECIMAL_FLOAT, vals[1]);
4149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
4152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.Formatter.BigDecimalLayoutForm#valueOf(String)
4153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
4154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_valueOfLjava_lang_String() {
4155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BigDecimalLayoutForm sci = BigDecimalLayoutForm.valueOf("SCIENTIFIC");
4156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong scientific value in enum", BigDecimalLayoutForm.SCIENTIFIC, sci);
4157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BigDecimalLayoutForm decFloat = BigDecimalLayoutForm.valueOf("DECIMAL_FLOAT");
4159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong dec float value from valueOf ", BigDecimalLayoutForm.DECIMAL_FLOAT, decFloat);
4160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /*
4163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Regression test for Harmony-5845
4164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * test the short name for timezone whether uses DaylightTime or not
4165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
4166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DaylightTime() {
4167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Calendar c1 = new GregorianCalendar(2007, 0, 1);
4168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Calendar c2 = new GregorianCalendar(2007, 7, 1);
4169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (String tz : TimeZone.getAvailableIDs()) {
4171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (tz.equals("America/Los_Angeles")) {
4172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                c1.setTimeZone(TimeZone.getTimeZone(tz));
4173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                c2.setTimeZone(TimeZone.getTimeZone(tz));
4174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(String.format("%1$tZ%2$tZ", c1, c2).equals("PSTPDT"));
4175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (tz.equals("America/Panama")) {
4177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                c1.setTimeZone(TimeZone.getTimeZone(tz));
4178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                c2.setTimeZone(TimeZone.getTimeZone(tz));
4179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(String.format("%1$tZ%2$tZ", c1, c2).equals("ESTEST"));
4180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /*
4185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Regression test for Harmony-5845
4186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * test scientific notation to follow RI's behavior
4187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
4188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ScientificNotation() {
4189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Formatter f = new Formatter();
4190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        MathContext mc = new MathContext(30);
4191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BigDecimal value = new BigDecimal(0.1, mc);
4192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.format("%.30G", value);
4193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String result = f.toString();
4195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String expected = "0.100000000000000005551115123126";
4196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(expected, result);
4197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
4201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Setup resource files for testing
4202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
4203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    protected void setUp() throws IOException {
4204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        root = System.getProperty("user.name").equalsIgnoreCase("root");
4205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        notExist = File.createTempFile("notexist", null);
4206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        notExist.delete();
4207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fileWithContent = File.createTempFile("filewithcontent", null);
4209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BufferedOutputStream bw = new BufferedOutputStream(
4210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new FileOutputStream(fileWithContent));
4211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bw.write(1);// write something into the file
4212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bw.close();
4213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        readOnly = File.createTempFile("readonly", null);
4215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        readOnly.setReadOnly();
4216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        secret = File.createTempFile("secret", null);
4218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        defaultTimeZone = TimeZone.getDefault();
4220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TimeZone cst = TimeZone.getTimeZone("Asia/Shanghai");
4221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TimeZone.setDefault(cst);
4222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
4225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Delete the resource files if they exist
4226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
4227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    protected void tearDown() {
4228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (notExist.exists()) {
4229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            notExist.delete();
4230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (fileWithContent.exists()) {
4233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fileWithContent.delete();
4234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (readOnly.exists()) {
4236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            readOnly.delete();
4237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (secret.exists()) {
4239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            secret.delete();
4240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TimeZone.setDefault(defaultTimeZone);
4243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath}
4245