/* | |
******************************************************************************* | |
* 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.DateFormatSymbols; | |
import com.ibm.icu.text.SimpleDateFormat; | |
import com.ibm.icu.util.Calendar; | |
import com.ibm.icu.util.TimeZone; | |
import com.ibm.icu.util.ULocale; | |
public class SimpleDateFormatTest extends ICUTestCase { | |
private static final String mdy = "MMM dd yyyy"; | |
private static final String md2 = "MMM dd yy"; | |
private static final String hmz = "'The time is' HH:mm:ss zzz"; | |
private static final String hmzmdy = hmz + " 'on' " + mdy; | |
private static final String hmzmdyStr = "The time is 15:05:20 CST on Jan 10 2006"; | |
private static final TimeZone tzc = TimeZone.getTimeZone("CST"); | |
private static final TimeZone tzp = TimeZone.getTimeZone("PST"); | |
private static final Calendar cal = Calendar.getInstance(tzc); | |
private static final Date date; | |
static { | |
cal.clear(); | |
cal.set(2006, 0, 10, 15, 5, 20); // arrgh, doesn't clear millis | |
date = cal.getTime(); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.format(Calendar, StringBuffer, FieldPosition)' | |
*/ | |
public void testFormatCalendarStringBufferFieldPosition() { | |
StringBuffer buf = new StringBuffer(); | |
FieldPosition fp = new FieldPosition(0); | |
SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy); | |
sdf.format(cal, buf, fp); | |
assertEquals(hmzmdyStr, buf.toString()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.parse(String, Calendar, ParsePosition)' | |
*/ | |
public void testParseStringCalendarParsePosition() { | |
Calendar cal = Calendar.getInstance(tzp); | |
cal.clear(); | |
ParsePosition pp = new ParsePosition(0); | |
SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy); | |
sdf.parse(hmzmdyStr, cal, pp); | |
assertEquals(date, cal.getTime()); | |
// note: java doesn't return the parsed time zone | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.clone()' | |
*/ | |
public void testClone() { | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat()' | |
*/ | |
public void testSimpleDateFormat() { | |
SimpleDateFormat sdf = new SimpleDateFormat(); | |
java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(); | |
assertEquals(jsdf.format(date), sdf.format(date)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String)' | |
*/ | |
public void testSimpleDateFormatString() { | |
SimpleDateFormat sdf = new SimpleDateFormat(mdy); | |
java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy); | |
assertEquals(jsdf.format(date), sdf.format(date)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, Locale)' | |
*/ | |
public void testSimpleDateFormatStringLocale() { | |
Locale l = Locale.JAPAN; | |
SimpleDateFormat sdf = new SimpleDateFormat(mdy, l); | |
java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l); | |
assertEquals(jsdf.format(date), sdf.format(date)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, ULocale)' | |
*/ | |
public void testSimpleDateFormatStringULocale() { | |
ULocale l = ULocale.JAPAN; | |
SimpleDateFormat sdf = new SimpleDateFormat(mdy, l); | |
java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l.toLocale()); | |
assertEquals(jsdf.format(date), sdf.format(date)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, DateFormatSymbols)' | |
*/ | |
public void testSimpleDateFormatStringDateFormatSymbols() { | |
Locale l = Locale.US; | |
DateFormatSymbols dfs = new DateFormatSymbols(l); | |
java.text.DateFormatSymbols jdfs = new java.text.DateFormatSymbols(l); | |
SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs); | |
java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, jdfs); | |
assertEquals(jsdf.format(date), sdf.format(date)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.set2DigitYearStart(Date)' | |
*/ | |
public void testSet2DigitYearStart() { | |
SimpleDateFormat sdf = new SimpleDateFormat(md2); | |
sdf.set2DigitYearStart(date); | |
try { | |
Date d = sdf.parse("Jan 15 04"); | |
assertNotEqual(-1, d.toString().indexOf("2104")); | |
} | |
catch (ParseException pe) { | |
fail(pe.getMessage()); | |
} | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.get2DigitYearStart()' | |
*/ | |
public void testGet2DigitYearStart() { | |
SimpleDateFormat sdf = new SimpleDateFormat(md2); | |
sdf.set2DigitYearStart(date); | |
assertEquals(date, sdf.get2DigitYearStart()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.toPattern()' | |
*/ | |
public void testToPattern() { | |
SimpleDateFormat sdf = new SimpleDateFormat(mdy); | |
assertEquals(mdy, sdf.toPattern()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.toLocalizedPattern()' | |
*/ | |
public void testToLocalizedPattern() { | |
Locale l = Locale.getDefault(); | |
Locale.setDefault(Locale.US); | |
SimpleDateFormat sdf = new SimpleDateFormat(mdy); | |
assertEquals(mdy, sdf.toLocalizedPattern()); | |
Locale.setDefault(l); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.applyPattern(String)' | |
*/ | |
public void testApplyPattern() { | |
SimpleDateFormat sdf = new SimpleDateFormat(); | |
sdf.setTimeZone(tzc); | |
sdf.applyPattern(hmzmdy); | |
assertEquals(hmzmdyStr, sdf.format(date)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.applyLocalizedPattern(String)' | |
*/ | |
public void testApplyLocalizedPattern() { | |
SimpleDateFormat sdf = new SimpleDateFormat(); | |
sdf.setTimeZone(tzc); | |
sdf.applyLocalizedPattern(hmzmdy); | |
assertEquals(hmzmdyStr, sdf.format(date)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.getDateFormatSymbols()' | |
*/ | |
public void testGetDateFormatSymbols() { | |
DateFormatSymbols dfs = new DateFormatSymbols(Locale.US); | |
SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs); | |
assertEquals(dfs, sdf.getDateFormatSymbols()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.text.SimpleDateFormat.setDateFormatSymbols(DateFormatSymbols)' | |
*/ | |
public void testSetDateFormatSymbols() { | |
DateFormatSymbols dfs = new DateFormatSymbols(Locale.JAPAN); | |
SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy); | |
sdf.setDateFormatSymbols(dfs); | |
// assumes Japanese symbols do not have gregorian month names | |
assertEquals(-1, sdf.format(date).indexOf("Jan")); | |
} | |
} |