2 *******************************************************************************
\r
3 * Copyright (C) 2006, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
8 package com.ibm.icu.tests;
\r
10 import java.text.FieldPosition;
\r
11 import java.text.ParseException;
\r
12 import java.text.ParsePosition;
\r
13 import java.util.Date;
\r
14 import java.util.Locale;
\r
16 import com.ibm.icu.text.DateFormatSymbols;
\r
17 import com.ibm.icu.text.SimpleDateFormat;
\r
18 import com.ibm.icu.util.Calendar;
\r
19 import com.ibm.icu.util.TimeZone;
\r
20 import com.ibm.icu.util.ULocale;
\r
22 public class SimpleDateFormatTest extends ICUTestCase {
\r
23 private static final String mdy = "MMM dd yyyy";
\r
24 private static final String md2 = "MMM dd yy";
\r
25 private static final String hmz = "'The time is' HH:mm:ss zzz";
\r
26 private static final String hmzmdy = hmz + " 'on' " + mdy;
\r
27 private static final String hmzmdyStr = "The time is 15:05:20 CST on Jan 10 2006";
\r
29 private static final TimeZone tzc = TimeZone.getTimeZone("CST");
\r
30 private static final TimeZone tzp = TimeZone.getTimeZone("PST");
\r
31 private static final Calendar cal = Calendar.getInstance(tzc);
\r
32 private static final Date date;
\r
35 cal.set(2006, 0, 10, 15, 5, 20); // arrgh, doesn't clear millis
\r
36 date = cal.getTime();
\r
40 * Test method for 'com.ibm.icu.text.SimpleDateFormat.format(Calendar, StringBuffer, FieldPosition)'
\r
42 public void testFormatCalendarStringBufferFieldPosition() {
\r
43 StringBuffer buf = new StringBuffer();
\r
44 FieldPosition fp = new FieldPosition(0);
\r
45 SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
\r
46 sdf.format(cal, buf, fp);
\r
47 assertEquals(hmzmdyStr, buf.toString());
\r
51 * Test method for 'com.ibm.icu.text.SimpleDateFormat.parse(String, Calendar, ParsePosition)'
\r
53 public void testParseStringCalendarParsePosition() {
\r
54 Calendar cal = Calendar.getInstance(tzp);
\r
56 ParsePosition pp = new ParsePosition(0);
\r
57 SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
\r
58 sdf.parse(hmzmdyStr, cal, pp);
\r
59 assertEquals(date, cal.getTime());
\r
60 // note: java doesn't return the parsed time zone
\r
64 * Test method for 'com.ibm.icu.text.SimpleDateFormat.clone()'
\r
66 public void testClone() {
\r
71 * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat()'
\r
73 public void testSimpleDateFormat() {
\r
74 SimpleDateFormat sdf = new SimpleDateFormat();
\r
75 java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat();
\r
76 assertEquals(jsdf.format(date), sdf.format(date));
\r
80 * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String)'
\r
82 public void testSimpleDateFormatString() {
\r
83 SimpleDateFormat sdf = new SimpleDateFormat(mdy);
\r
84 java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy);
\r
85 assertEquals(jsdf.format(date), sdf.format(date));
\r
89 * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, Locale)'
\r
91 public void testSimpleDateFormatStringLocale() {
\r
92 Locale l = Locale.JAPAN;
\r
93 SimpleDateFormat sdf = new SimpleDateFormat(mdy, l);
\r
94 java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l);
\r
95 assertEquals(jsdf.format(date), sdf.format(date));
\r
99 * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, ULocale)'
\r
101 public void testSimpleDateFormatStringULocale() {
\r
102 ULocale l = ULocale.JAPAN;
\r
103 SimpleDateFormat sdf = new SimpleDateFormat(mdy, l);
\r
104 java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l.toLocale());
\r
105 assertEquals(jsdf.format(date), sdf.format(date));
\r
109 * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, DateFormatSymbols)'
\r
111 public void testSimpleDateFormatStringDateFormatSymbols() {
\r
112 Locale l = Locale.US;
\r
113 DateFormatSymbols dfs = new DateFormatSymbols(l);
\r
114 java.text.DateFormatSymbols jdfs = new java.text.DateFormatSymbols(l);
\r
115 SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs);
\r
116 java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, jdfs);
\r
117 assertEquals(jsdf.format(date), sdf.format(date));
\r
121 * Test method for 'com.ibm.icu.text.SimpleDateFormat.set2DigitYearStart(Date)'
\r
123 public void testSet2DigitYearStart() {
\r
124 SimpleDateFormat sdf = new SimpleDateFormat(md2);
\r
125 sdf.set2DigitYearStart(date);
\r
127 Date d = sdf.parse("Jan 15 04");
\r
128 assertNotEqual(-1, d.toString().indexOf("2104"));
\r
130 catch (ParseException pe) {
\r
131 fail(pe.getMessage());
\r
136 * Test method for 'com.ibm.icu.text.SimpleDateFormat.get2DigitYearStart()'
\r
138 public void testGet2DigitYearStart() {
\r
139 SimpleDateFormat sdf = new SimpleDateFormat(md2);
\r
140 sdf.set2DigitYearStart(date);
\r
141 assertEquals(date, sdf.get2DigitYearStart());
\r
145 * Test method for 'com.ibm.icu.text.SimpleDateFormat.toPattern()'
\r
147 public void testToPattern() {
\r
148 SimpleDateFormat sdf = new SimpleDateFormat(mdy);
\r
149 assertEquals(mdy, sdf.toPattern());
\r
153 * Test method for 'com.ibm.icu.text.SimpleDateFormat.toLocalizedPattern()'
\r
155 public void testToLocalizedPattern() {
\r
156 Locale l = Locale.getDefault();
\r
157 Locale.setDefault(Locale.US);
\r
158 SimpleDateFormat sdf = new SimpleDateFormat(mdy);
\r
159 assertEquals(mdy, sdf.toLocalizedPattern());
\r
160 Locale.setDefault(l);
\r
164 * Test method for 'com.ibm.icu.text.SimpleDateFormat.applyPattern(String)'
\r
166 public void testApplyPattern() {
\r
167 SimpleDateFormat sdf = new SimpleDateFormat();
\r
168 sdf.setTimeZone(tzc);
\r
169 sdf.applyPattern(hmzmdy);
\r
170 assertEquals(hmzmdyStr, sdf.format(date));
\r
174 * Test method for 'com.ibm.icu.text.SimpleDateFormat.applyLocalizedPattern(String)'
\r
176 public void testApplyLocalizedPattern() {
\r
177 SimpleDateFormat sdf = new SimpleDateFormat();
\r
178 sdf.setTimeZone(tzc);
\r
179 sdf.applyLocalizedPattern(hmzmdy);
\r
180 assertEquals(hmzmdyStr, sdf.format(date));
\r
184 * Test method for 'com.ibm.icu.text.SimpleDateFormat.getDateFormatSymbols()'
\r
186 public void testGetDateFormatSymbols() {
\r
187 DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
\r
188 SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs);
\r
189 assertEquals(dfs, sdf.getDateFormatSymbols());
\r
193 * Test method for 'com.ibm.icu.text.SimpleDateFormat.setDateFormatSymbols(DateFormatSymbols)'
\r
195 public void testSetDateFormatSymbols() {
\r
196 DateFormatSymbols dfs = new DateFormatSymbols(Locale.JAPAN);
\r
197 SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
\r
198 sdf.setDateFormatSymbols(dfs);
\r
199 // assumes Japanese symbols do not have gregorian month names
\r
200 assertEquals(-1, sdf.format(date).indexOf("Jan"));
\r