1e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson/* Licensed to the Apache Software Foundation (ASF) under one or more 2e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * contributor license agreements. See the NOTICE file distributed with 3e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * this work for additional information regarding copyright ownership. 4e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 5e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * (the "License"); you may not use this file except in compliance with 6e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * the License. You may obtain a copy of the License at 7e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * 8e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 9e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * 10e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * Unless required by applicable law or agreed to in writing, software 11e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 12e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * See the License for the specific language governing permissions and 14e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson * limitations under the License. 15e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson */ 16e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonpackage libcore.java.util; 17e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 18e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonimport java.io.IOException; 19e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonimport java.util.Calendar; 20e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonimport java.util.Formattable; 21e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonimport java.util.Formatter; 22e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonimport java.util.FormatterClosedException; 23e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonimport java.util.IllegalFormatException; 24e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonimport java.util.IllegalFormatFlagsException; 25e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonimport java.util.Locale; 26e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonimport junit.framework.TestCase; 27e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonimport tests.support.Support_Locale; 28e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 29e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonpublic final class OldFormatterTest extends TestCase { 30e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 31e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson public void test_Formattable() { 32e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Formattable ones = new Formattable() { 33e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson public void formatTo(Formatter formatter, int flags, int width, int precision) throws IllegalFormatException { 34e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson try { 35e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson formatter.out().append("111"); 36e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } catch (IOException e) { 37e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson throw new RuntimeException(e); 38e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 39e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 40e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson }; 41e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Formattable twos = new Formattable() { 42e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson public void formatTo(Formatter formatter, int flags, int width, int precision) throws IllegalFormatException { 43e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson try { 44e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson formatter.out().append("222"); 45e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } catch (IOException e) { 46e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson throw new RuntimeException(e); 47e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 48e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 49e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson }; 50e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 51e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson assertEquals("aaa 111?", new Formatter().format("aaa %s?", ones).toString()); 52e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson assertEquals("aaa 111 bbb 222?", new Formatter().format("aaa %s bbb %s?", ones, twos).toString()); 53e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 54e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 55e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson public void test_formatLjava_util_LocaleLjava_lang_StringLjava_lang_Object() { 56e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Double val = new Double(3.14); 57e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Calendar cal = Calendar.getInstance(); 58e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Formatter fLoc = null; 59e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Formatter fNoL = null; 60e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson cal.set(2008, Calendar.SEPTEMBER, 23, 18, 30); 61e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 62f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes if (Support_Locale.isLocaleAvailable(Locale.GERMAN)) { 63f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc = new Formatter(Locale.GERMAN); 64f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fNoL = new Formatter(Locale.GERMAN); 65f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc.format(Locale.US, "%f", val); 66f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fNoL.format("%f", val); 67f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes assertFalse(fLoc.toString().equals(fNoL.toString())); 68f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes } 69e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 70f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes if (Support_Locale.isLocaleAvailable(Locale.FRANCE)) { 71f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc = new Formatter(Locale.FRANCE); 72f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fNoL = new Formatter(Locale.FRANCE); 73f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc.format(Locale.US, "%f", val); 74f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fNoL.format("%f", val); 75f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes assertFalse(fLoc.toString().equals(fNoL.toString())); 76f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes } 77e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 78e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fLoc = new Formatter(Locale.US); 79e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fNoL = new Formatter(Locale.US); 80e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fLoc.format(Locale.US, "%f", val); 81e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fNoL.format("%f", val); 82e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson assertTrue(fLoc.toString().equals(fNoL.toString())); 83e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 84f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes if (Support_Locale.isLocaleAvailable(Locale.GERMAN)) { 85f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc = new Formatter(Locale.GERMAN); 86f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fNoL = new Formatter(Locale.GERMAN); 87f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc.format(Locale.US, "%tA %tB %td %tT", cal, cal, cal, cal); 88f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fNoL.format("%tA %tB %td %tT", cal, cal, cal, cal); 89f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes assertFalse(fLoc.toString().equals(fNoL.toString())); 90f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes } 91e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 92f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes if (Support_Locale.isLocaleAvailable(Locale.FRANCE)) { 93f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc = new Formatter(Locale.FRANCE); 94f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fNoL = new Formatter(Locale.FRANCE); 95f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc.format(Locale.US, "%tA %tB %td %tT", cal, cal, cal, cal); 96f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fNoL.format("%tA %tB %td %tT", cal, cal, cal, cal); 97f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes assertFalse(fLoc.toString().equals(fNoL.toString())); 98f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes } 99e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 100e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fLoc = new Formatter(Locale.US); 101e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fNoL = new Formatter(Locale.US); 102e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fLoc.format(Locale.US, "%tA %tB %td %tT", cal, cal, cal, cal); 103e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fNoL.format("%tA %tB %td %tT", cal, cal, cal, cal); 104e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson assertTrue(fLoc.toString().equals(fNoL.toString())); 105e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 106e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson final String[] illFlags = { "%+ e", "%+ E", "%+ g", "%+ G", "%+ f", 107e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson "%+ a", "%+ A", "%-03e", "%-03E", "%-03g", "%-03G", "%-03f", 108e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson "%-03a", "%-03A" }; 109e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson for (int i = 0; i < illFlags.length; i++) { 110f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes if (Support_Locale.isLocaleAvailable(Locale.FRANCE)) { 111f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes try { 112f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc = new Formatter(Locale.US); 113f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc.format(Locale.FRANCE, illFlags[i], 1.23d); 114f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fail("should throw IllegalFormatFlagsException"); 115f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes } catch (IllegalFormatFlagsException expected) { 116f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes } 117e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 118e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 119f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes if (Support_Locale.isLocaleAvailable(Locale.CANADA)) { 120f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes try { 121f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc = new Formatter(Locale.CANADA); 122f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc.format(Locale.GERMAN, illFlags[i], (Double) null); 123f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fail("should throw IllegalFormatFlagsException"); 124f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes } catch (IllegalFormatFlagsException expected) { 125f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes } 126e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 127e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 128e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fLoc.close(); 129e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 130f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes if (Support_Locale.isLocaleAvailable(Locale.GERMAN)) { 131f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes try { 132f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes fLoc.format(Locale.GERMAN, "%f", val); 133f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes } catch (FormatterClosedException expected) { 134f049593e9a5160492a0dafb19e5595dac138505eElliott Hughes } 135e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 136e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 137e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson} 138