174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes/* 2994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * this work for additional information regarding copyright ownership. 5994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * (the "License"); you may not use this file except in compliance with 7994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * the License. You may obtain a copy of the License at 874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes * 9994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 1074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes * 11994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * See the License for the specific language governing permissions and 15994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * limitations under the License. 16994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes */ 17994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespackage org.apache.harmony.tests.java.text; 18994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 19994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.DateFormat; 20994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.DateFormatSymbols; 21994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.FieldPosition; 22994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.ParseException; 23994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.ParsePosition; 24994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.SimpleDateFormat; 25994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.Calendar; 26994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.Date; 27994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.GregorianCalendar; 28994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.Locale; 29994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.SimpleTimeZone; 30994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.TimeZone; 31994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 32994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 33994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespublic class SimpleDateFormatTest extends junit.framework.TestCase { 34994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 35a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller private SimpleDateFormat format; 36994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 37a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller private SimpleDateFormat pFormat; 38018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 39018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes private TimeZone previousDefaultTimeZone; 40018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 41018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes @Override public void setUp() { 42018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes previousDefaultTimeZone = TimeZone.getDefault(); 43018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); 44a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller format = new SimpleDateFormat("", Locale.ENGLISH); 45a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller pFormat = new SimpleDateFormat("", Locale.ENGLISH); 46018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 47018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 48018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes @Override public void tearDown() { 49018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes TimeZone.setDefault(previousDefaultTimeZone); 50018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 51994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 52994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_Constructor() { 53994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method java.text.SimpleDateFormat() 54994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat f2 = new SimpleDateFormat(); 55994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); 56994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Wrong default", f2.equals(DateFormat.getDateTimeInstance( 57994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes DateFormat.SHORT, DateFormat.SHORT, Locale.getDefault()))); 58a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals(new DateFormatSymbols())); 59a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("Doesn't work", f2.format(new Date()).getClass() == String.class); 60994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 61994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 62994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_ConstructorLjava_lang_String() { 63994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method java.text.SimpleDateFormat(java.lang.String) 64994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat f2 = new SimpleDateFormat("yyyy"); 65994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); 66994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals("Wrong pattern", "yyyy", f2.toPattern()); 67a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("Wrong locale", f2.equals(new SimpleDateFormat("yyyy", Locale.getDefault()))); 68a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals(new DateFormatSymbols())); 69a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("Doesn't work", f2.format(new Date()).getClass() == String.class); 70994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 71994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Invalid constructor value. 72994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes try { 73a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller new SimpleDateFormat("this is an invalid simple date format"); 74994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes fail("Expected test_ConstructorLjava_lang_String to throw IAE."); 75994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } catch (IllegalArgumentException ex) { 76994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // expected 7774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 78994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 79994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Null string value 80994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes try { 81994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes new SimpleDateFormat(null); 82994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes fail("Expected test_ConstructorLjava_lang_String to throw NPE."); 83994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } catch (NullPointerException ex) { 84994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // expected 8574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 86994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 87994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 88994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_ConstructorLjava_lang_StringLjava_text_DateFormatSymbols() { 89994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method java.text.SimpleDateFormat(java.lang.String, 90994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.text.DateFormatSymbols) 91994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes DateFormatSymbols symbols = new DateFormatSymbols(Locale.ENGLISH); 92994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes symbols.setEras(new String[] { "Before", "After" }); 93994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat f2 = new SimpleDateFormat("y'y'yy", symbols); 94994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); 95994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals("Wrong pattern", "y'y'yy", f2.toPattern()); 96994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals(symbols)); 97018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Doesn't work", f2.format(new Date()).getClass() == String.class); 98018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 99018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes try { 100018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes new SimpleDateFormat(null, symbols); 101018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes fail(); 102018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } catch (NullPointerException expected) { 103018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 104018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 105018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes try { 106018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes new SimpleDateFormat("eee", symbols); 107018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes fail(); 108018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } catch (IllegalArgumentException expected) { 109018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 110994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 111994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 112994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_ConstructorLjava_lang_StringLjava_util_Locale() { 113994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method java.text.SimpleDateFormat(java.lang.String, 114994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.util.Locale) 115018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes SimpleDateFormat f2 = new SimpleDateFormat("'yyyy' MM yy", Locale.GERMAN); 116994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); 117994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals("Wrong pattern", "'yyyy' MM yy", f2.toPattern()); 118994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( 119994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes new DateFormatSymbols(Locale.GERMAN))); 120018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Doesn't work", f2.format(new Date()).getClass() == String.class); 121018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 122018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes try { 123018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes new SimpleDateFormat(null, Locale.GERMAN); 124018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes fail(); 125018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } catch (NullPointerException expected) { 126018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 127018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes try { 128018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes new SimpleDateFormat("eee", Locale.GERMAN); 129018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes fail(); 130018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } catch (IllegalArgumentException expected) { 131018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 132994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 133994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 134994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_applyLocalizedPatternLjava_lang_String() { 135994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat f2 = new SimpleDateFormat("y", new Locale("de", "CH")); 13674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes String pattern = "GyMdkHmsSEDFwWahKzZLc"; 13774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes f2.applyLocalizedPattern(pattern); 13874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(pattern, f2.toPattern()); 13974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(pattern, f2.toLocalizedPattern()); 140994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 141994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // test invalid patterns 14274473971cc9d960376295fbcc430320c9ed62991Elliott Hughes try { 14374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes f2.applyLocalizedPattern("b"); 14474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes fail(); 14574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } catch (IllegalArgumentException expected) { 14674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } 147994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 148994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes try { 14974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes f2.applyLocalizedPattern("a '"); // Unterminated quote. 15074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes fail(); 15174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } catch (IllegalArgumentException expected) { 152994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 153994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 154994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes try { 155994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes f2.applyLocalizedPattern(null); 15674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes fail(); 15774473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } catch (NullPointerException expected) { 158994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 159994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 160994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 161994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_applyPatternLjava_lang_String() { 162994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method void 163994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.text.SimpleDateFormat.applyPattern(java.lang.String) 164994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat f2 = new SimpleDateFormat("y", new Locale("de", "CH")); 165994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes f2.applyPattern("GyMdkHmsSEDFwWahKz"); 166994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals("Wrong pattern", "GyMdkHmsSEDFwWahKz", f2.toPattern()); 167994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 168994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // test invalid patterns 169994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes try { 170994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes f2.applyPattern("b"); 171994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes fail("Expected IllegalArgumentException for pattern with invalid patter letter: b"); 172994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } catch (IllegalArgumentException e) { 173994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 174994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 175994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes// try { 176994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes// f2.applyPattern("u"); 177994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes// fail("Expected IllegalArgumentException for pattern with invalid patter letter: u"); 178994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes// } catch (IllegalArgumentException e) { 179994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes// } 180994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 181994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes try { 182994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes f2.applyPattern("a '"); 183994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes fail("Expected IllegalArgumentException for pattern with unterminated quote: a '"); 184994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } catch (IllegalArgumentException e) { 185994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 186994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 187994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes try { 188994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes f2.applyPattern(null); 189994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes fail("Expected NullPointerException for null pattern"); 190994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } catch (NullPointerException e) { 191994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 192994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 193994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 194994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_clone() { 195994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method java.lang.Object java.text.SimpleDateFormat.clone() 196994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat f2 = new SimpleDateFormat(); 197994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat clone = (SimpleDateFormat) f2.clone(); 198994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Invalid clone", f2.equals(clone)); 199994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes clone.applyPattern("y"); 200994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Format modified", !f2.equals(clone)); 201994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes clone = (SimpleDateFormat) f2.clone(); 202994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Date date = clone.get2DigitYearStart(); 203994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // date.setTime(0); 204994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // assertTrue("Equal after date change: " + 205994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // f2.get2DigitYearStart().getTime() + " " + 206994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // clone.get2DigitYearStart().getTime(), !f2.equals(clone)); 207994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 208994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 209994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_equalsLjava_lang_Object() { 210994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method boolean 211994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.text.SimpleDateFormat.equals(java.lang.Object) 212994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat format = (SimpleDateFormat) DateFormat.getInstance(); 213994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat clone = (SimpleDateFormat) format.clone(); 214994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("clone not equal", format.equals(clone)); 215994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes format.format(new Date()); 216994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("not equal after format", format.equals(clone)); 217994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 218994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 219994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_equals_afterFormat() { 220994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Regression test for HARMONY-209 221994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat df = new SimpleDateFormat(); 222994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes df.format(new Date()); 223994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals(df, new SimpleDateFormat()); 224018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 225018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 226018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes public void test_hashCode() { 227018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes SimpleDateFormat format = (SimpleDateFormat) DateFormat.getInstance(); 228018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes SimpleDateFormat clone = (SimpleDateFormat) format.clone(); 229018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("clone has not equal hash code", clone.hashCode() == format.hashCode()); 230018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.format(new Date()); 231a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("clone has not equal hash code after format", 232a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller clone.hashCode() == format.hashCode()); 233018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes DateFormatSymbols symbols = new DateFormatSymbols(Locale.ENGLISH); 234018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes symbols.setEras(new String[] { "Before", "After" }); 235018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes SimpleDateFormat format2 = new SimpleDateFormat("y'y'yy", symbols); 236018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertFalse("objects has equal hash code", format2.hashCode() == format.hashCode()); 237994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 238994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 239994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_formatToCharacterIteratorLjava_lang_Object() { 240994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes try { 241994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Regression for HARMONY-466 242994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes new SimpleDateFormat().formatToCharacterIterator(null); 24374473971cc9d960376295fbcc430320c9ed62991Elliott Hughes fail(); 24474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes } catch (NullPointerException expected) { 245994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 24674473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 247994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method formatToCharacterIterator(java.lang.Object) 248994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes new Support_SimpleDateFormat( 249994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes "test_formatToCharacterIteratorLjava_lang_Object") 250994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes .t_formatToCharacterIterator(); 251994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 252994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 253994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_formatLjava_util_DateLjava_lang_StringBufferLjava_text_FieldPosition() { 254994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method java.lang.StringBuffer 255994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.text.SimpleDateFormat.format(java.util.Date, 256994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.lang.StringBuffer, java.text.FieldPosition) 257994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 258994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes new Support_SimpleDateFormat( 259994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes "test_formatLjava_util_DateLjava_lang_StringBufferLjava_text_FieldPosition") 260994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes .t_format_with_FieldPosition(); 261994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 262994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Calendar cal = new GregorianCalendar(1999, Calendar.JUNE, 2, 15, 3, 6); 263a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" G", cal, " AD", DateFormat.ERA_FIELD); 264a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" GG", cal, " AD", DateFormat.ERA_FIELD); 265a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" GGG", cal, " AD", DateFormat.ERA_FIELD); 266a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" G", new GregorianCalendar(-1999, Calendar.JUNE, 2), " BC", 267a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.ERA_FIELD); 268994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 269018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes // This assumes Unicode behavior where 'y' and 'yyy' don't truncate, 270018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes // which means that it will fail on the RI. 271a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" y", cal, " 1999", DateFormat.YEAR_FIELD); 272a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" yy", cal, " 99", DateFormat.YEAR_FIELD); 273a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" yy", new GregorianCalendar(2001, Calendar.JUNE, 2), " 01", 274a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.YEAR_FIELD); 275a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" yy", new GregorianCalendar(2000, Calendar.JUNE, 2), " 00", 276a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.YEAR_FIELD); 277a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" yyy", new GregorianCalendar(2000, Calendar.JUNE, 2), " 2000", 278a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.YEAR_FIELD); 279a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" yyy", cal, " 1999", DateFormat.YEAR_FIELD); 280a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" yyyy", cal, " 1999", DateFormat.YEAR_FIELD); 281a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" yyyyy", cal, " 01999", DateFormat.YEAR_FIELD); 282a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 283a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" M", cal, " 6", DateFormat.MONTH_FIELD); 284a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" M", new GregorianCalendar(1999, Calendar.NOVEMBER, 2), " 11", 285a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.MONTH_FIELD); 286a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" MM", cal, " 06", DateFormat.MONTH_FIELD); 287a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" MMM", cal, " Jun", DateFormat.MONTH_FIELD); 288a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" MMMM", cal, " June", DateFormat.MONTH_FIELD); 289a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" MMMMM", cal, " J", DateFormat.MONTH_FIELD); 290a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 291a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" d", cal, " 2", DateFormat.DATE_FIELD); 292a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" d", new GregorianCalendar(1999, Calendar.NOVEMBER, 12), " 12", 293a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.DATE_FIELD); 294a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" dd", cal, " 02", DateFormat.DATE_FIELD); 295a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" dddd", cal, " 0002", DateFormat.DATE_FIELD); 296a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 297a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" h", cal, " 3", DateFormat.HOUR1_FIELD); 298a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" h", new GregorianCalendar(1999, Calendar.NOVEMBER, 12), " 12", 299a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.HOUR1_FIELD); 300a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" hh", cal, " 03", DateFormat.HOUR1_FIELD); 301a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" hhhh", cal, " 0003", DateFormat.HOUR1_FIELD); 302a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 303a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" H", cal, " 15", DateFormat.HOUR_OF_DAY0_FIELD); 304a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" H", new GregorianCalendar(1999, Calendar.NOVEMBER, 12, 4, 0), " 4", 305a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.HOUR_OF_DAY0_FIELD); 306a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" H", new GregorianCalendar(1999, Calendar.NOVEMBER, 12, 12, 0), " 12", 307a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.HOUR_OF_DAY0_FIELD); 308a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" H", new GregorianCalendar(1999, Calendar.NOVEMBER, 12), " 0", 309a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.HOUR_OF_DAY0_FIELD); 310a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" HH", cal, " 15", DateFormat.HOUR_OF_DAY0_FIELD); 311a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" HHHH", cal, " 0015", DateFormat.HOUR_OF_DAY0_FIELD); 312a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 313a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" m", cal, " 3", DateFormat.MINUTE_FIELD); 314a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" m", new GregorianCalendar(1999, Calendar.NOVEMBER, 12, 4, 47), " 47", 315a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.MINUTE_FIELD); 316a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" mm", cal, " 03", DateFormat.MINUTE_FIELD); 317a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" mmmm", cal, " 0003", DateFormat.MINUTE_FIELD); 318a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 319a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" s", cal, " 6", DateFormat.SECOND_FIELD); 320a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" s", new GregorianCalendar(1999, Calendar.NOVEMBER, 12, 4, 47, 13), " 13", 321a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.SECOND_FIELD); 322a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" ss", cal, " 06", DateFormat.SECOND_FIELD); 323a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" ssss", cal, " 0006", DateFormat.SECOND_FIELD); 324a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 325a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" S", cal, " 0", DateFormat.MILLISECOND_FIELD); 326994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Calendar temp = new GregorianCalendar(); 327994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes temp.set(Calendar.MILLISECOND, 961); 328994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 329a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" SS", temp, " 96", DateFormat.MILLISECOND_FIELD); 330a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" SSSS", cal, " 0000", DateFormat.MILLISECOND_FIELD); 331994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 332a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" SS", cal, " 00", DateFormat.MILLISECOND_FIELD); 333994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 334a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" E", cal, " Wed", DateFormat.DAY_OF_WEEK_FIELD); 335a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" EE", cal, " Wed", DateFormat.DAY_OF_WEEK_FIELD); 336a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" EEE", cal, " Wed", DateFormat.DAY_OF_WEEK_FIELD); 337a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" EEEE", cal, " Wednesday", DateFormat.DAY_OF_WEEK_FIELD); 338a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" EEEEE", cal, " W", DateFormat.DAY_OF_WEEK_FIELD); 339994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 340a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" D", cal, " 153", DateFormat.DAY_OF_YEAR_FIELD); 341a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" DD", cal, " 153", DateFormat.DAY_OF_YEAR_FIELD); 342a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" DDDD", cal, " 0153", DateFormat.DAY_OF_YEAR_FIELD); 343994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 344a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" F", cal, " 1", DateFormat.DAY_OF_WEEK_IN_MONTH_FIELD); 345a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" F", new GregorianCalendar(1999, Calendar.NOVEMBER, 14), " 2", 346a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.DAY_OF_WEEK_IN_MONTH_FIELD); 347a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" FF", cal, " 01", DateFormat.DAY_OF_WEEK_IN_MONTH_FIELD); 348a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" FFFF", cal, " 0001", DateFormat.DAY_OF_WEEK_IN_MONTH_FIELD); 349994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 350018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes cal.setMinimalDaysInFirstWeek(1); 351018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes cal.setFirstDayOfWeek(1); 352018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 353a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" w", cal, " 23", DateFormat.WEEK_OF_YEAR_FIELD); 354a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" ww", cal, " 23", DateFormat.WEEK_OF_YEAR_FIELD); 355a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" wwww", cal, " 0023", DateFormat.WEEK_OF_YEAR_FIELD); 356a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 357a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" W", cal, " 1", DateFormat.WEEK_OF_MONTH_FIELD); 358a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" WW", cal, " 01", DateFormat.WEEK_OF_MONTH_FIELD); 359a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" WWWW", cal, " 0001", DateFormat.WEEK_OF_MONTH_FIELD); 360a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 361a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" a", cal, " PM", DateFormat.AM_PM_FIELD); 362a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" a", new GregorianCalendar(1999, Calendar.NOVEMBER, 14), " AM", 363a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.AM_PM_FIELD); 364a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" a", new GregorianCalendar(1999, Calendar.NOVEMBER, 14, 12, 0), " PM", 365a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.AM_PM_FIELD); 366a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" aa", cal, " PM", DateFormat.AM_PM_FIELD); 367a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" aaa", cal, " PM", DateFormat.AM_PM_FIELD); 368a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" aaaa", cal, " PM", DateFormat.AM_PM_FIELD); 369a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" aaaaa", cal, " PM", DateFormat.AM_PM_FIELD); 370a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 371a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" k", cal, " 15", DateFormat.HOUR_OF_DAY1_FIELD); 372a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" k", new GregorianCalendar(1999, Calendar.NOVEMBER, 12, 4, 0), " 4", 373a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.HOUR_OF_DAY1_FIELD); 374a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" k", new GregorianCalendar(1999, Calendar.NOVEMBER, 12, 12, 0), " 12", 375a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.HOUR_OF_DAY1_FIELD); 376a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" k", new GregorianCalendar(1999, Calendar.NOVEMBER, 12), " 24", 377a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.HOUR_OF_DAY1_FIELD); 378a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" kk", cal, " 15", DateFormat.HOUR_OF_DAY1_FIELD); 379a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" kkkk", cal, " 0015", DateFormat.HOUR_OF_DAY1_FIELD); 380a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 381a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" K", cal, " 3", DateFormat.HOUR0_FIELD); 382a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" K", new GregorianCalendar(1999, Calendar.NOVEMBER, 12), " 0", 383a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller DateFormat.HOUR0_FIELD); 384a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" KK", cal, " 03", DateFormat.HOUR0_FIELD); 385a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" KKKK", cal, " 0003", DateFormat.HOUR0_FIELD); 386994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 387018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.applyPattern("'Mkz''':.@5"); 388018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertEquals("Wrong output", "Mkz':.@5", format.format(new Date())); 389018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 390018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes // Test invalid args to format. 391018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes SimpleDateFormat dateFormat = new SimpleDateFormat(); 392018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes try { 393018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes dateFormat.format(null, new StringBuffer(), new FieldPosition(1)); 394018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes fail(); 395018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } catch (NullPointerException expected) { 396018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 397018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 398018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 399a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller private void assertFormat(String pattern, Calendar cal, String expected, int field) { 400a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller StringBuffer buffer = new StringBuffer(); 401a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller FieldPosition position = new FieldPosition(field); 402a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller format.applyPattern(pattern); 403a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller format.format(cal.getTime(), buffer, position); 404a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller String result = buffer.toString(); 405a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("Wrong format: \"" + pattern + "\" expected: " + expected + " result: " + result, 406a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller result.equals(expected)); 407a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertEquals("Wrong begin position: " + pattern + "\n" + "expected: " + expected + "\n" + 408a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller "field: " + field, 1, position.getBeginIndex()); 409a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("Wrong end position: " + pattern + " expected: " + expected + " field: " + field, 410a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller position.getEndIndex() == result.length()); 411a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller } 412018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 413a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller public void test_format_time_zones() throws Exception { 414018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes Calendar cal = new GregorianCalendar(1999, Calendar.JUNE, 2, 15, 3, 6); 415018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 416994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes format.setTimeZone(TimeZone.getTimeZone("EST")); 417a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" z", cal, " GMT-05:00", DateFormat.TIMEZONE_FIELD); 418994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Calendar temp2 = new GregorianCalendar(1999, Calendar.JANUARY, 12); 419a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" z", temp2, " GMT-05:00", DateFormat.TIMEZONE_FIELD); 420a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zz", cal, " GMT-05:00", DateFormat.TIMEZONE_FIELD); 421a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zzz", cal, " GMT-05:00", DateFormat.TIMEZONE_FIELD); 422a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zzzz", cal, " GMT-05:00", DateFormat.TIMEZONE_FIELD); 423a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zzzz", temp2, " GMT-05:00", DateFormat.TIMEZONE_FIELD); 424a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zzzzz", cal, " GMT-05:00", DateFormat.TIMEZONE_FIELD); 425994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 426018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.setTimeZone(TimeZone.getTimeZone("America/New_York")); 427a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" z", cal, " EDT", DateFormat.TIMEZONE_FIELD); 428a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" z", temp2, " EST", DateFormat.TIMEZONE_FIELD); 429a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zz", cal, " EDT", DateFormat.TIMEZONE_FIELD); 430a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zzz", cal, " EDT", DateFormat.TIMEZONE_FIELD); 431a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zzzz", cal, " Eastern Daylight Time", DateFormat.TIMEZONE_FIELD); 432a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zzzz", temp2, " Eastern Standard Time", DateFormat.TIMEZONE_FIELD); 433a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zzzzz", cal, " Eastern Daylight Time", DateFormat.TIMEZONE_FIELD); 434018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 435018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes TimeZone tz0001 = new SimpleTimeZone(60000, "ONE MINUTE"); 436018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes TimeZone tz0130 = new SimpleTimeZone(5400000, "ONE HOUR, THIRTY"); 437018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes TimeZone tzMinus0130 = new SimpleTimeZone(-5400000, "NEG ONE HOUR, THIRTY"); 438018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 439018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.setTimeZone(tz0001); 440a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller// test(" Z", cal, " +0001", DateFormat.TIMEZONE_FIELD); 441a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller// test(" ZZZZ", cal, " GMT+00:01", DateFormat.TIMEZONE_FIELD); 442a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller// test(" ZZZZZ", cal, " +00:01", DateFormat.TIMEZONE_FIELD); 443018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.setTimeZone(tz0130); 444a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller// test(" Z", cal, " +0130", DateFormat.TIMEZONE_FIELD); 445018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.setTimeZone(tzMinus0130); 446a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller// test(" Z", cal, " -0130", DateFormat.TIMEZONE_FIELD); 447018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 448018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.setTimeZone(tz0001); 449a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" z", cal, " GMT+00:01", DateFormat.TIMEZONE_FIELD); 450a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" zzzz", cal, " GMT+00:01", DateFormat.TIMEZONE_FIELD); 451018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.setTimeZone(tz0130); 452a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" z", cal, " GMT+01:30", DateFormat.TIMEZONE_FIELD); 453018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.setTimeZone(tzMinus0130); 454a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertFormat(" z", cal, " GMT-01:30", DateFormat.TIMEZONE_FIELD); 455994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 456994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 457994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_timeZoneFormatting() { 458994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // tests specific to formatting of timezones 45974473971cc9d960376295fbcc430320c9ed62991Elliott Hughes Date summerDate = new GregorianCalendar(1999, Calendar.JUNE, 2, 15, 3, 6).getTime(); 46074473971cc9d960376295fbcc430320c9ed62991Elliott Hughes Date winterDate = new GregorianCalendar(1999, Calendar.JANUARY, 12).getTime(); 461994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 462a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone( 463a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller "America/Los_Angeles", "PDT, Pacific Daylight Time", "-0700, GMT-07:00", 464a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller summerDate); 465a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone( 466a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller "America/Los_Angeles", "PST, Pacific Standard Time", "-0800, GMT-08:00", 467a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller winterDate); 46874473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 469a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone("GMT-7", "GMT-07:00, GMT-07:00", "-0700, GMT-07:00", summerDate); 470a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone("GMT-7", "GMT-07:00, GMT-07:00", "-0700, GMT-07:00", winterDate); 47174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 472a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone("GMT+14", "GMT+14:00, GMT+14:00", "+1400, GMT+14:00", summerDate); 473a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone("GMT+14", "GMT+14:00, GMT+14:00", "+1400, GMT+14:00", winterDate); 474994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 47574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes // this fails on the RI! 476a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone("America/Detroit", "EDT, Eastern Daylight Time", "-0400, GMT-04:00", 477a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller summerDate); 478a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone("America/Detroit", "EST, Eastern Standard Time", "-0500, GMT-05:00", 479a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller winterDate); 480994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 481994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Pacific/Kiritimati is one of the timezones supported only in mJava 482a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone( 483a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller "Pacific/Kiritimati", "GMT+14:00, Line Islands Time", "+1400, GMT+14:00", 484a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller summerDate); 485a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone( 486a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller "Pacific/Kiritimati", "GMT+14:00, Line Islands Time", "+1400, GMT+14:00", 487a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller winterDate); 488a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 489a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone("EST", "GMT-05:00, GMT-05:00", "-0500, GMT-05:00", summerDate); 490a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone("EST", "GMT-05:00, GMT-05:00", "-0500, GMT-05:00", winterDate); 491a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 492a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone("GMT+14", "GMT+14:00, GMT+14:00", "+1400, GMT+14:00", summerDate); 493a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller verifyFormatTimezone("GMT+14", "GMT+14:00, GMT+14:00", "+1400, GMT+14:00", winterDate); 494a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller } 49574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 496a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller private void verifyFormatTimezone(String timeZoneId, String expected1, String expected2, 497a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller Date date) { 498a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller format.setTimeZone(SimpleTimeZone.getTimeZone(timeZoneId)); 499a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller format.applyPattern("z, zzzz"); 500a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertEquals("Test z for TimeZone : " + timeZoneId, expected1, format.format(date)); 50174473971cc9d960376295fbcc430320c9ed62991Elliott Hughes 502a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller format.applyPattern("Z, ZZZZ"); 503a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertEquals("Test Z for TimeZone : " + timeZoneId, expected2, format.format(date)); 504994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 505994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 506994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_get2DigitYearStart() { 507994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method java.util.Date 508994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.text.SimpleDateFormat.get2DigitYearStart() 509994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat f1 = new SimpleDateFormat("y"); 510994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Date date = f1.get2DigitYearStart(); 511994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Calendar cal = new GregorianCalendar(); 512994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes int year = cal.get(Calendar.YEAR); 513994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.setTime(date); 514a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("Wrong default year start", cal.get(Calendar.YEAR) == (year - 80)); 515994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 516994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 517994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_getDateFormatSymbols() { 518994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method java.text.DateFormatSymbols 519994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.text.SimpleDateFormat.getDateFormatSymbols() 520994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat df = (SimpleDateFormat) DateFormat.getInstance(); 521994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes DateFormatSymbols dfs = df.getDateFormatSymbols(); 522994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Symbols identical", dfs != df.getDateFormatSymbols()); 523994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 524994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 525018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes public void test_parseLjava_lang_StringLjava_text_ParsePosition() throws Exception { 526994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method java.util.Date 527994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.text.SimpleDateFormat.parse(java.lang.String, 528994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.text.ParsePosition) 529994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Calendar cal = new GregorianCalendar(1970, Calendar.JANUARY, 1); 530994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Date time = cal.getTime(); 531a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h", " 12", time, 1, 3); 532a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("H", " 0", time, 1, 2); 533a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("k", " 24", time, 1, 3); 534a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("K", " 0", time, 1, 2); 535994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 536994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal = new GregorianCalendar(1970, Calendar.JANUARY, 1, 1, 0); 537994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes time = cal.getTime(); 538a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h", "1", time, 0, 1); 539a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("H", "1 ", time, 0, 1); 540a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("k", "1", time, 0, 1); 541a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("K", "1", time, 0, 1); 542994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 543994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal = new GregorianCalendar(1970, Calendar.JANUARY, 1, 11, 0); 544994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes time = cal.getTime(); 545a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h", "0011 ", time, 0, 4); 546a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("K", "11", time, 0, 2); 547994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal = new GregorianCalendar(1970, Calendar.JANUARY, 1, 23, 0); 548994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes time = cal.getTime(); 549a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("H", "23", time, 0, 2); 550a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("k", "23", time, 0, 2); 551994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 552a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h a", " 3 AM", new GregorianCalendar(1970, 553994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Calendar.JANUARY, 1, 3, 0).getTime(), 1, 5); 554a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("K a", " 3 pm ", new GregorianCalendar(1970, 555994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Calendar.JANUARY, 1, 15, 0).getTime(), 1, 5); 556a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("m:s", "0:59 ", new GregorianCalendar(1970, 557994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Calendar.JANUARY, 1, 0, 0, 59).getTime(), 0, 4); 558a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("m:s", "59:0", new GregorianCalendar(1970, Calendar.JANUARY, 559994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 1, 0, 59, 0).getTime(), 0, 4); 560a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("ms", "059", new GregorianCalendar(1970, Calendar.JANUARY, 561994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 1, 0, 0, 59).getTime(), 0, 3); 562994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 563994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal = new GregorianCalendar(1970, Calendar.JANUARY, 1); 564a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("S", "0", cal.getTime(), 0, 1); 565994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.setTimeZone(TimeZone.getTimeZone("HST")); 566994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.set(Calendar.MILLISECOND, 999); 567a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("S z", "999 HST", cal.getTime(), 0, 7); 568994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 569994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal = new GregorianCalendar(1970, Calendar.JANUARY, 1); 570994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.set(Calendar.ERA, GregorianCalendar.BC); 571a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("G", "Bc ", cal.getTime(), 0, 2); 572a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 573a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("y", "00", new GregorianCalendar(2000, Calendar.JANUARY, 1).getTime(), 0, 2); 574a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("y", "99", new GregorianCalendar(1999, Calendar.JANUARY, 1).getTime(), 0, 2); 575a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("y", "1", new GregorianCalendar(1, Calendar.JANUARY, 1).getTime(), 0, 1); 576a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("y", "-1", new GregorianCalendar(-1, Calendar.JANUARY, 1).getTime(), 0, 2); 577a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("y", "001", new GregorianCalendar(1, Calendar.JANUARY, 1).getTime(), 0, 3); 578a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("y", "2005", new GregorianCalendar(2005, Calendar.JANUARY, 1).getTime(), 0, 4); 579a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yy", "00", new GregorianCalendar(2000, Calendar.JANUARY, 1).getTime(), 0, 2); 580a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yy", "99", new GregorianCalendar(1999, Calendar.JANUARY, 1).getTime(), 0, 2); 581a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yy", "1", new GregorianCalendar(1, Calendar.JANUARY, 1).getTime(), 0, 1); 582a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yy", "-1", new GregorianCalendar(-1, Calendar.JANUARY, 1).getTime(), 0, 2); 583a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yy", "001", new GregorianCalendar(1, Calendar.JANUARY, 1).getTime(), 0, 3); 584a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yy", "2005", new GregorianCalendar(2005, Calendar.JANUARY, 1).getTime(), 0, 4); 585a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yyy", "99", new GregorianCalendar(99, Calendar.JANUARY, 1).getTime(), 0, 2); 586a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yyy", "1", new GregorianCalendar(1, Calendar.JANUARY, 1).getTime(), 0, 1); 587a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yyy", "-1", new GregorianCalendar(-1, Calendar.JANUARY, 1).getTime(), 0, 2); 588a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yyy", "001", new GregorianCalendar(1, Calendar.JANUARY, 1).getTime(), 0, 3); 589a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yyy", "2005", new GregorianCalendar(2005, Calendar.JANUARY, 1).getTime(), 590a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 0, 4); 591a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yyyy", "99", new GregorianCalendar(99, Calendar.JANUARY, 1).getTime(), 0, 2); 592a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yyyy", " 1999", new GregorianCalendar(1999, Calendar.JANUARY, 1).getTime(), 593a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 2, 6); 594a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("MM'M'", "4M", new GregorianCalendar(1970, Calendar.APRIL, 1).getTime(), 0, 2); 595a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("MMM", "Feb", new GregorianCalendar(1970, Calendar.FEBRUARY, 1).getTime(), 596a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 0, 3); 597a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("MMMM d", "April 14 ", 598a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller new GregorianCalendar(1970, Calendar.APRIL, 14).getTime(), 0, 8); 599a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("MMMMd", "April14 ", new GregorianCalendar(1970, Calendar.APRIL, 14).getTime(), 600a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 0, 7); 601a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("E w", "Mon 12", new GregorianCalendar(1970, Calendar.MARCH, 16).getTime(), 602a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 0, 6); 603a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("Ew", "Mon12", new GregorianCalendar(1970, Calendar.MARCH, 16).getTime(), 0, 5); 604a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("M EE ''W", "5 Tue '2", new GregorianCalendar(1970, Calendar.MAY, 5).getTime(), 605a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 0, 8); 606a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("MEE''W", "5Tue'2", new GregorianCalendar(1970, Calendar.MAY, 5).getTime(), 607a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 0, 6); 608a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("MMM EEE F", " JUL Sunday 3", 609a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller new GregorianCalendar(1970, Calendar.JULY, 19).getTime(), 1, 13); 610a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("MMMEEEF", " JULSunday3", 611a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller new GregorianCalendar(1970, Calendar.JULY, 19).getTime(), 1, 11); 612994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 613994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal = new GregorianCalendar(1970, Calendar.JANUARY, 1); 614994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.setTimeZone(TimeZone.getTimeZone("GMT+0:1")); 615994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.set(Calendar.DAY_OF_YEAR, 243); 616a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("D z", "243 GMT+0:0", cal.getTime(), 0, 11); 617994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.setTimeZone(TimeZone.getTimeZone("EST")); 618994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.set(1970, Calendar.JANUARY, 1, 4, 30); 619a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h:m z", "4:30 GMT-5 ", cal.getTime(), 0, 10); 620a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h z", "14 GMT-24 ", new Date(51840000), 0, 9); 621a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h z", "14 GMT-23 ", new Date(133200000), 0, 9); 622a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h z", "14 GMT-0001 ", new Date(54000000), 0, 11); 623a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h z", "14 GMT+24 ", new Date(48960000), 0, 9); 624a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h z", "14 GMT+23 ", new Date(-32400000), 0, 9); 625a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h z", "14 GMT+0001 ", new Date(46800000), 0, 11); 626a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h z", "14 +0001 ", new Date(46800000), 0, 8); 627a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("h z", "14 -0001 ", new Date(54000000), 0, 8); 628a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 629a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertParse("yyyyMMddHHmmss", "19990913171901", 630a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller new GregorianCalendar(1999, Calendar.SEPTEMBER, 13, 17, 19, 1).getTime(), 0, 14); 631994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 632994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Date d = new Date(1015822800000L); 633994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat df = new SimpleDateFormat("", new Locale("en", "US")); 634994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes df.setTimeZone(TimeZone.getTimeZone("EST")); 635994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 636018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("dd MMMM yyyy EEEE"); 637018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes String output = df.format(d); 638018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes Date date = df.parse(output); 639018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 1: " + date, d.equals(date)); 640018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 641018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("dd MMMM yyyy F"); 642018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 643018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse(output); 644018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 2: " + date, d.equals(date)); 645018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 646018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("dd MMMM yyyy w"); 647018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 648018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse(output); 649018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 3: " + date, d.equals(date)); 650018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 651018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("dd MMMM yyyy W"); 652018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 653018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse(output); 654018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 4: " + date, d.equals(date)); 655018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 656018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("dd MMMM yyyy D"); 657018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse("5 January 2002 70"); 658018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 5: " + date, d.equals(date)); 659018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 660018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("W w dd MMMM yyyy EEEE"); 661018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 662018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse("3 12 5 March 2002 Monday"); 663018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 6: " + date, d.equals(date)); 664018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 665018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("w W dd MMMM yyyy EEEE"); 666018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 667018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse("12 3 5 March 2002 Monday"); 668018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 6a: " + date, d.equals(date)); 669018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 670018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("F dd MMMM yyyy EEEE"); 671018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 672018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse("2 5 March 2002 Monday"); 673018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 7: " + date, d.equals(date)); 674018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 675018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("w dd MMMM yyyy EEEE"); 676018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 677018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse("11 5 January 2002 Monday"); 678018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 8: " + date, d.equals(date)); 679018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 680018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("w dd yyyy EEEE MMMM"); 681018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 682018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse("11 5 2002 Monday January"); 683018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 9: " + date, d.equals(date)); 684018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 685018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("w yyyy EEEE MMMM dd"); 686018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 687018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse("17 2002 Monday March 11"); 688018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 10: " + date, d.equals(date)); 689018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 690018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("dd D yyyy MMMM"); 691018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 692018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse("5 70 2002 January"); 693018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 11: " + date, d.equals(date)); 694018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 695018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes df.applyPattern("D dd yyyy MMMM"); 696018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes output = df.format(d); 697018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes date = df.parse("240 11 2002 March"); 698018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Invalid result 12: " + date, d.equals(date)); 699018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 700994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes try { 701018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.parse("240 11 2002 March", null); 702018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes fail(); 703018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } catch (NullPointerException expected) { 704018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 705018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 706018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes try { 707018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes format.parse(null, new ParsePosition(0)); 708018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes fail(); 709018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } catch (NullPointerException expected) { 710994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 711994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 712994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 713a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller private void assertParse(String pattern, String input, Date expected, int start, int end) { 714a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller pFormat.applyPattern(pattern); 715a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller ParsePosition position = new ParsePosition(start); 716a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller Date result = pFormat.parse(input, position); 717a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("Wrong result: " + pattern + " input: " + input + " expected: " + expected + 718a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller " result: " + result, expected.equals(result)); 719a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertTrue("Wrong end position: " + pattern + " input: " + input, 720a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller position.getIndex() == end); 721a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller } 722a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller 723994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_set2DigitYearStartLjava_util_Date() { 724994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method void 725994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.text.SimpleDateFormat.set2DigitYearStart(java.util.Date) 726994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat f1 = new SimpleDateFormat("yy"); 727a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller f1.set2DigitYearStart(new GregorianCalendar(1950, Calendar.JANUARY, 1).getTime()); 728994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Calendar cal = new GregorianCalendar(); 729994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes try { 730994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.setTime(f1.parse("49")); 731994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals("Incorrect year 2049", 2049, cal.get(Calendar.YEAR)); 732994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.setTime(f1.parse("50")); 733994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes int year = cal.get(Calendar.YEAR); 734994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Incorrect year 1950: " + year, year == 1950); 735994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes f1.applyPattern("y"); 736994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.setTime(f1.parse("00")); 737994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals("Incorrect year 2000", 2000, cal.get(Calendar.YEAR)); 738994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes f1.applyPattern("yyy"); 739994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes cal.setTime(f1.parse("50")); 740994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals("Incorrect year 50", 50, cal.get(Calendar.YEAR)); 741994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } catch (ParseException e) { 742994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes fail("ParseException"); 743994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 744994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 745994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 746994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_setDateFormatSymbolsLjava_text_DateFormatSymbols() { 747994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Test for method void 748994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // java.text.SimpleDateFormat.setDateFormatSymbols(java.text.DateFormatSymbols) 749994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat f1 = new SimpleDateFormat("a"); 750994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes DateFormatSymbols symbols = new DateFormatSymbols(); 751994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes symbols.setAmPmStrings(new String[] { "morning", "night" }); 752994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes f1.setDateFormatSymbols(symbols); 753994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes DateFormatSymbols newSym = f1.getDateFormatSymbols(); 754994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Set incorrectly", newSym.equals(symbols)); 755994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertTrue("Not a clone", f1.getDateFormatSymbols() != symbols); 756a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller String result = f1.format(new GregorianCalendar(1999, Calendar.JUNE, 12, 3, 0).getTime()); 757994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals("Incorrect symbols used", "morning", result); 758994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes symbols.setEras(new String[] { "before", "after" }); 759018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Identical symbols", !f1.getDateFormatSymbols().equals(symbols)); 760018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 761018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes try { 762018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes f1.setDateFormatSymbols(null); 763018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes fail(); 764018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } catch (NullPointerException expected) { 765018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 766018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes } 767018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 768018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes public void test_toPattern() { 769018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes String pattern = "yyyy mm dd"; 770018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes SimpleDateFormat f = new SimpleDateFormat(pattern); 771018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertEquals("Wrong pattern: " + pattern, pattern, f.toPattern()); 772018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 773018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes pattern = "GyMdkHmsSEDFwWahKz"; 774018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes f = new SimpleDateFormat("GyMdkHmsSEDFwWahKz", new Locale("de", "CH")); 775018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Wrong pattern: " + pattern, f.toPattern().equals(pattern)); 776018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes 777018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes pattern = "G y M d Z"; 778018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes f = new SimpleDateFormat(pattern, new Locale("de", "CH")); 779018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes pattern = f.toPattern(); 780018b61546e6a69ff9c5105ec017c85df641766c4Elliott Hughes assertTrue("Wrong pattern: " + pattern, f.toPattern().equals(pattern)); 781994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 782994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 783994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_toLocalizedPattern() { 78474473971cc9d960376295fbcc430320c9ed62991Elliott Hughes SimpleDateFormat f2 = new SimpleDateFormat("GyMdkHmsSEDFwWahKzZLc", new Locale("de", "CH")); 78574473971cc9d960376295fbcc430320c9ed62991Elliott Hughes assertEquals(f2.toPattern(), f2.toLocalizedPattern()); 786994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 787994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 788994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes public void test_parse_with_spaces() { 789994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // Regression for HARMONY-502 790994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); 791994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes df.setLenient(false); 792994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 793994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes char allowed_chars[] = { 0x9, 0x20 }; 794994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes String allowed_char_names[] = { "tab", "space" }; 795994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes for (int i = 0; i < allowed_chars.length; i++) { 796a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller Date expected = new GregorianCalendar(1970, Calendar.JANUARY, 1, 9, 7, 6).getTime(); 797994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes ParsePosition pp = new ParsePosition(0); 798994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Date d = df.parse(allowed_chars[i] + "9:07:06", pp); 799994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertNotNull("hour may be prefixed by " + allowed_char_names[i], d); 800994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals(expected, d); 801994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 802994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes pp = new ParsePosition(0); 803994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes d = df.parse("09:" + allowed_chars[i] + "7:06", pp); 804a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertNotNull("minute may be prefixed by " + allowed_char_names[i], d); 805994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals(expected, d); 806994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 807994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes pp = new ParsePosition(0); 808994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes d = df.parse("09:07:" + allowed_chars[i] + "6", pp); 809a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller assertNotNull("second may be prefixed by " + allowed_char_names[i], d); 810994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertEquals(expected, d); 811994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 812994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 813994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes char not_allowed_chars[] = { 814a4b67b6f5ba9d233023c55c816121070770e4ac5Neil Fuller // whitespace 815994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 0x1c, 0x1d, 0x1e, 0x1f, 0xa, 0xb, 0xc, 0xd, 0x2001, 0x2002, 816994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 0x2003, 0x2004, 0x2005, 0x2006, 0x2008, 0x2009, 0x200a, 0x200b, 817994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 0x2028, 0x2029, 0x3000, 818994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes // non-breaking space 819994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 0xA0, 0x2007, 0x202F }; 820994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 821994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes for (int i = 0; i < not_allowed_chars.length; i++) { 822994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes ParsePosition pp = new ParsePosition(0); 823994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes Date d = df.parse(not_allowed_chars[i] + "9:07", pp); 824994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertNull(d); 825994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 826994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes pp = new ParsePosition(0); 827994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes d = df.parse("09:" + not_allowed_chars[i] + "7", pp); 828994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertNull(d); 829994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes 830994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes pp = new ParsePosition(0); 831994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes d = df.parse("09:07:" + not_allowed_chars[i] + "6", pp); 832994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes assertNull(d); 833994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 834994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes } 835994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes} 836