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 Wilson 28e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilsonpublic final class OldFormatterTest extends TestCase { 29e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 30e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson public void test_Formattable() { 31e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Formattable ones = new Formattable() { 32e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson public void formatTo(Formatter formatter, int flags, int width, int precision) throws IllegalFormatException { 33e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson try { 34e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson formatter.out().append("111"); 35e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } catch (IOException e) { 36e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson throw new RuntimeException(e); 37e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 38e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 39e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson }; 40e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Formattable twos = new Formattable() { 41e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson public void formatTo(Formatter formatter, int flags, int width, int precision) throws IllegalFormatException { 42e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson try { 43e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson formatter.out().append("222"); 44e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } catch (IOException e) { 45e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson throw new RuntimeException(e); 46e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 47e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 48e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson }; 49e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 50e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson assertEquals("aaa 111?", new Formatter().format("aaa %s?", ones).toString()); 51e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson assertEquals("aaa 111 bbb 222?", new Formatter().format("aaa %s bbb %s?", ones, twos).toString()); 52e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 53e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 54e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson public void test_formatLjava_util_LocaleLjava_lang_StringLjava_lang_Object() { 55e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Double val = new Double(3.14); 56e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Calendar cal = Calendar.getInstance(); 57e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Formatter fLoc = null; 58e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson Formatter fNoL = null; 59e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson cal.set(2008, Calendar.SEPTEMBER, 23, 18, 30); 60e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 61dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc = new Formatter(Locale.GERMAN); 62dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fNoL = new Formatter(Locale.GERMAN); 63dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc.format(Locale.US, "%f", val); 64dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fNoL.format("%f", val); 65dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes assertFalse(fLoc.toString().equals(fNoL.toString())); 66e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 67dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc = new Formatter(Locale.FRANCE); 68dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fNoL = new Formatter(Locale.FRANCE); 69dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc.format(Locale.US, "%f", val); 70dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fNoL.format("%f", val); 71dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes assertFalse(fLoc.toString().equals(fNoL.toString())); 72e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 73e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fLoc = new Formatter(Locale.US); 74e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fNoL = new Formatter(Locale.US); 75e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fLoc.format(Locale.US, "%f", val); 76e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fNoL.format("%f", val); 77e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson assertTrue(fLoc.toString().equals(fNoL.toString())); 78e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 79dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc = new Formatter(Locale.GERMAN); 80dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fNoL = new Formatter(Locale.GERMAN); 81dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc.format(Locale.US, "%tA %tB %td %tT", cal, cal, cal, cal); 82dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fNoL.format("%tA %tB %td %tT", cal, cal, cal, cal); 83dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes assertFalse(fLoc.toString().equals(fNoL.toString())); 84e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 85dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc = new Formatter(Locale.FRANCE); 86dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fNoL = new Formatter(Locale.FRANCE); 87dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc.format(Locale.US, "%tA %tB %td %tT", cal, cal, cal, cal); 88dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fNoL.format("%tA %tB %td %tT", cal, cal, cal, cal); 89dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes assertFalse(fLoc.toString().equals(fNoL.toString())); 90e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 91e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fLoc = new Formatter(Locale.US); 92e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fNoL = new Formatter(Locale.US); 93e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fLoc.format(Locale.US, "%tA %tB %td %tT", cal, cal, cal, cal); 94e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson fNoL.format("%tA %tB %td %tT", cal, cal, cal, cal); 95e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson assertTrue(fLoc.toString().equals(fNoL.toString())); 96e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 97e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson final String[] illFlags = { "%+ e", "%+ E", "%+ g", "%+ G", "%+ f", 98e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson "%+ a", "%+ A", "%-03e", "%-03E", "%-03g", "%-03G", "%-03f", 99e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson "%-03a", "%-03A" }; 100e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson for (int i = 0; i < illFlags.length; i++) { 101dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes try { 102dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc = new Formatter(Locale.US); 103dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc.format(Locale.FRANCE, illFlags[i], 1.23d); 104dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fail("should throw IllegalFormatFlagsException"); 105dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes } catch (IllegalFormatFlagsException expected) { 106e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 107dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes try { 108dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc = new Formatter(Locale.CANADA); 109dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc.format(Locale.GERMAN, illFlags[i], (Double) null); 110dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fail("should throw IllegalFormatFlagsException"); 111dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes } catch (IllegalFormatFlagsException expected) { 112e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 113e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 114e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson 115dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc.close(); 116dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes try { 117dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fLoc.format(Locale.GERMAN, "%f", val); 118dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes fail(); 119dd9b761d3b32bf02de354cb228f83cf7697032efElliott Hughes } catch (FormatterClosedException expected) { 120e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 121e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson } 122e10910215b65ca9f9f0b85d4c4a7405fde54d71eJesse Wilson} 123