| /* |
| ******************************************************************************* |
| * Copyright (C) 2006-2011, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ******************************************************************************* |
| */ |
| |
| package com.ibm.icu.tests; |
| |
| import java.text.FieldPosition; |
| import java.text.ParseException; |
| import java.text.ParsePosition; |
| import java.util.Date; |
| import java.util.Locale; |
| |
| import com.ibm.icu.text.DateFormat; |
| import com.ibm.icu.text.NumberFormat; |
| import com.ibm.icu.util.Calendar; |
| import com.ibm.icu.util.TimeZone; |
| import com.ibm.icu.util.ULocale; |
| |
| public class DateFormatTest extends ICUTestCase { |
| private Calendar aCal; |
| private Calendar anESTCal; |
| private Date aDate; |
| private String aDateString; |
| private String aTimeString; |
| private String anESTTimeString; |
| private String aDateTimeString; |
| private String aShortDateTimeString; |
| private String aDefaultESTDateTimeString; |
| private DateFormat aDF; |
| private StringBuffer aBuf; |
| private FieldPosition anFP; |
| private FieldPosition anFPField; |
| |
| private static int YEAR_POS_START = 8; |
| private static int YEAR_POS_END = 12; |
| |
| protected void setUp() throws Exception { |
| super.setUp(); |
| |
| java.util.GregorianCalendar gcal = new java.util.GregorianCalendar(); |
| gcal.clear(); |
| gcal.set(java.util.GregorianCalendar.YEAR, 1990); |
| gcal.set(java.util.GregorianCalendar.MONTH, java.util.GregorianCalendar.DECEMBER); |
| gcal.set(java.util.GregorianCalendar.DATE, 17); |
| gcal.set(java.util.GregorianCalendar.HOUR, 5); |
| gcal.set(java.util.GregorianCalendar.MINUTE, 17); |
| aCal = new Calendar(gcal); |
| anESTCal = Calendar.getInstance(); |
| anESTCal.setTimeZone(TimeZone.getTimeZone("EST")); |
| aDate = gcal.getTime(); |
| aDateString = "Dec 17, 1990"; // medium -- the default |
| aTimeString = "5:17:00 AM"; // medium |
| anESTTimeString = "8:17:00 AM"; |
| aDateTimeString = "Dec 17, 1990 5:17:00 AM"; // medium, medium |
| aDefaultESTDateTimeString = "Dec 17, 1990 8:17 AM"; // medium, short -- the default |
| aShortDateTimeString = "12/17/90 5:17 AM"; // short, short |
| aDF = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US); |
| aBuf = new StringBuffer(); |
| anFP = new FieldPosition(DateFormat.YEAR_FIELD); |
| anFPField = new FieldPosition(DateFormat.Field.YEAR); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.hashCode()' |
| */ |
| public final void testHashCode() { |
| DateFormat df = DateFormat.getInstance(); |
| DateFormat eq = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); |
| testEHCS(df, eq, aDF); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.DateFormat(DateFormat)' |
| */ |
| public final void testDateFormat() { |
| DateFormat df = new DateFormat(java.text.DateFormat.getInstance()); |
| assertEquals(DateFormat.getInstance(), df); |
| } |
| |
| private void assertEqualDateString(StringBuffer buf) { |
| assertEquals(aDateTimeString, buf.toString()); |
| } |
| |
| private void assertEqualDateString(String str) { |
| assertEquals(aDateTimeString, str); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.format(Object, StringBuffer, FieldPosition)' |
| */ |
| public final void testFormatObjectStringBufferFieldPosition() { |
| assertEqualDateString(aDF.format(aDate, aBuf, anFP)); |
| assertEquals(YEAR_POS_START, anFP.getBeginIndex()); |
| assertEquals(YEAR_POS_END, anFP.getEndIndex()); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.format(Calendar, StringBuffer, FieldPosition)' |
| */ |
| public final void testFormatCalendarStringBufferFieldPosition() { |
| assertEqualDateString(aDF.format(aCal, aBuf, anFP)); |
| assertEquals(YEAR_POS_START, anFP.getBeginIndex()); |
| assertEquals(YEAR_POS_END, anFP.getEndIndex()); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.format(Date, StringBuffer, FieldPosition)' |
| */ |
| public final void testFormatDateStringBufferFieldPosition() { |
| assertEqualDateString(aDF.format(aDate, aBuf, anFPField)); |
| assertEquals(YEAR_POS_START, anFPField.getBeginIndex()); |
| assertEquals(YEAR_POS_END, anFPField.getEndIndex()); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.format(Date)' |
| */ |
| public final void testFormatDate() { |
| assertEqualDateString(aDF.format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.parse(String)' |
| */ |
| public final void testParseString() throws Exception { |
| assertEquals(aDate, aDF.parse(aDateTimeString)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.parse(String, Calendar, ParsePosition)' |
| */ |
| public final void testParseStringCalendarParsePosition() { |
| aDF.parse(aDateTimeString, aCal, new ParsePosition(0)); |
| assertEquals(aDate, aCal.getTime()); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.parse(String, ParsePosition)' |
| */ |
| public final void testParseStringParsePosition() { |
| assertEquals(aDate, aDF.parse(aDateTimeString, new ParsePosition(0))); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.parseObject(String, ParsePosition)' |
| */ |
| public final void testParseObjectStringParsePosition() { |
| assertEquals(aDate, aDF.parseObject(aDateTimeString, new ParsePosition(0))); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance()' |
| */ |
| public final void testGetTimeInstance() { |
| assertEquals(aTimeString, DateFormat.getTimeInstance().format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int)' |
| */ |
| public final void testGetTimeInstanceInt() { |
| assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, Locale)' |
| */ |
| public final void testGetTimeInstanceIntLocale() { |
| assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, ULocale)' |
| */ |
| public final void testGetTimeInstanceIntULocale() { |
| assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM, ULocale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance()' |
| */ |
| public final void testGetDateInstance() { |
| assertEquals(aDateString, DateFormat.getDateInstance().format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int)' |
| */ |
| public final void testGetDateInstanceInt() { |
| assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, Locale)' |
| */ |
| public final void testGetDateInstanceIntLocale() { |
| assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, ULocale)' |
| */ |
| public final void testGetDateInstanceIntULocale() { |
| assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM, ULocale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance()' |
| */ |
| public final void testGetDateTimeInstance() { |
| assertEquals(aDateTimeString, DateFormat.getDateTimeInstance().format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int)' |
| */ |
| public final void testGetDateTimeInstanceIntInt() { |
| assertEquals(aDateTimeString, |
| DateFormat.getDateTimeInstance( |
| DateFormat.MEDIUM, DateFormat.MEDIUM).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, Locale)' |
| */ |
| public final void testGetDateTimeInstanceIntIntLocale() { |
| assertEquals(aDateTimeString, |
| DateFormat.getDateTimeInstance( |
| DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, ULocale)' |
| */ |
| public final void testGetDateTimeInstanceIntIntULocale() { |
| assertEquals(aDateTimeString, |
| DateFormat.getDateTimeInstance( |
| DateFormat.MEDIUM, DateFormat.MEDIUM, ULocale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getInstance()' |
| */ |
| public final void testGetInstance() { |
| assertEquals(aShortDateTimeString, DateFormat.getInstance().format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getAvailableLocales()' |
| */ |
| public final void testGetAvailableLocales() { |
| Locale[] locales = DateFormat.getAvailableLocales(); |
| if (ICUTestCase.testingWrapper) { |
| ICUTestCase.assertArraysEqual(java.text.DateFormat.getAvailableLocales(), locales); |
| } else { |
| assertNotNull(locales); |
| } |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.setCalendar(Calendar)' |
| */ |
| public final void testSetCalendar() { |
| Calendar cal = Calendar.getInstance(); |
| cal.setTimeZone(TimeZone.getTimeZone("EST")); |
| DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT); |
| df.setCalendar(cal); |
| assertEquals("8:17 AM", df.format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getCalendar()' |
| */ |
| public final void testGetCalendar() { |
| Calendar cal = Calendar.getInstance(); |
| cal.setTimeZone(TimeZone.getTimeZone("EST")); |
| DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT); |
| df.setCalendar(cal); |
| assertEquals(cal, df.getCalendar()); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.setNumberFormat(NumberFormat)' |
| */ |
| public final void testSetNumberFormat() { |
| // no easy way to test effect of setting the number format |
| NumberFormat nf = NumberFormat.getInstance(); |
| DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT); |
| df.setNumberFormat(nf); |
| // note, can't actually USE the dateformat since it changes the calendar |
| assertEquals(nf, df.getNumberFormat()); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getNumberFormat()' |
| */ |
| public final void testGetNumberFormat() { |
| // see testSetNumberFormat |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.setTimeZone(TimeZone)' |
| */ |
| public final void testSetTimeZone() { |
| DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT); |
| TimeZone tz = TimeZone.getTimeZone("EST"); |
| df.setTimeZone(tz); |
| assertEquals("8:17 AM", df.format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getTimeZone()' |
| */ |
| public final void testGetTimeZone() { |
| DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT); |
| TimeZone tz = TimeZone.getTimeZone("EST"); |
| df.setTimeZone(tz); |
| assertEquals(tz, df.getTimeZone()); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.setLenient(boolean)' |
| */ |
| public final void testSetLenient() throws Exception { |
| DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT); |
| df.parse("2/31/90"); // succeeds, default is lenient |
| df.setLenient(false); |
| try { |
| df.parse("2/31/90"); |
| throw new Exception("strict parse should have failed"); |
| } |
| catch (ParseException e) { |
| // ok, this is what we expect |
| } |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.isLenient()' |
| */ |
| public final void testIsLenient() { |
| DateFormat df = DateFormat.getInstance(); |
| assertTrue(df.isLenient()); |
| df.setLenient(false); |
| assertFalse(df.isLenient()); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, Locale)' |
| */ |
| public final void testGetDateInstanceCalendarIntLocale() { |
| assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM, Locale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, ULocale)' |
| */ |
| public final void testGetDateInstanceCalendarIntULocale() { |
| assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM, ULocale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, Locale)' |
| */ |
| public final void testGetTimeInstanceCalendarIntLocale() { |
| assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM, Locale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, ULocale)' |
| */ |
| public final void testGetTimeInstanceCalendarIntULocale() { |
| assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM, ULocale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, Locale)' |
| */ |
| public final void testGetDateTimeInstanceCalendarIntIntLocale() { |
| assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT, Locale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, ULocale)' |
| */ |
| public final void testGetDateTimeInstanceCalendarIntIntULocale() { |
| assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT, ULocale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, Locale)' |
| */ |
| public final void testGetInstanceCalendarLocale() { |
| assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal, Locale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, ULocale)' |
| */ |
| public final void testGetInstanceCalendarULocale() { |
| assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal, ULocale.US).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar)' |
| */ |
| public final void testGetInstanceCalendar() { |
| assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int)' |
| */ |
| public final void testGetDateInstanceCalendarInt() { |
| assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int)' |
| */ |
| public final void testGetTimeInstanceCalendarInt() { |
| assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int)' |
| */ |
| public final void testGetDateTimeInstanceCalendarIntInt() { |
| assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT).format(aDate)); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.toString()' |
| */ |
| public final void testToString() { |
| assertNotNull(aDF.toString()); |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.clone()' |
| */ |
| public final void testClone() { |
| // see testHashCode |
| } |
| |
| /* |
| * Test method for 'com.ibm.icu.text.DateFormat.equals(Object)' |
| */ |
| public final void testEqualsObject() { |
| // see testHashCode |
| } |
| } |