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.DateFormat;
\r
17 import com.ibm.icu.text.NumberFormat;
\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 DateFormatTest extends ICUTestCase {
\r
23 private Calendar aCal;
\r
24 private Calendar anESTCal;
\r
26 private String aDateString;
\r
27 private String aTimeString;
\r
28 private String anESTTimeString;
\r
29 private String aDateTimeString;
\r
30 private String aShortDateTimeString;
\r
31 private String aDefaultESTDateTimeString;
\r
32 private DateFormat aDF;
\r
33 private StringBuffer aBuf;
\r
34 private FieldPosition anFP;
\r
36 protected void setUp() throws Exception {
\r
39 java.util.GregorianCalendar gcal = new java.util.GregorianCalendar();
\r
41 gcal.set(java.util.GregorianCalendar.YEAR, 1990);
\r
42 gcal.set(java.util.GregorianCalendar.MONTH, java.util.GregorianCalendar.DECEMBER);
\r
43 gcal.set(java.util.GregorianCalendar.DATE, 17);
\r
44 gcal.set(java.util.GregorianCalendar.HOUR, 5);
\r
45 gcal.set(java.util.GregorianCalendar.MINUTE, 17);
\r
46 aCal = new Calendar(gcal);
\r
47 anESTCal = Calendar.getInstance();
\r
48 anESTCal.setTimeZone(TimeZone.getTimeZone("EST"));
\r
49 aDate = gcal.getTime();
\r
50 aDateString = "Dec 17, 1990"; // medium -- the default
\r
51 aTimeString = "5:17:00 AM"; // medium
\r
52 anESTTimeString = "8:17:00 AM";
\r
53 aDateTimeString = "Dec 17, 1990 5:17:00 AM"; // medium, medium
\r
54 aDefaultESTDateTimeString = "Dec 17, 1990 8:17 AM"; // medium, short -- the default
\r
55 aShortDateTimeString = "12/17/90 5:17 AM"; // short, short
\r
56 aDF = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US);
\r
57 aBuf = new StringBuffer();
\r
58 anFP = new FieldPosition(0);
\r
62 * Test method for 'com.ibm.icu.text.DateFormat.hashCode()'
\r
64 public final void testHashCode() {
\r
65 DateFormat df = DateFormat.getInstance();
\r
66 DateFormat eq = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
\r
67 testEHCS(df, eq, aDF);
\r
71 * Test method for 'com.ibm.icu.text.DateFormat.DateFormat(DateFormat)'
\r
73 public final void testDateFormat() {
\r
74 DateFormat df = new DateFormat(java.text.DateFormat.getInstance());
\r
75 assertEquals(DateFormat.getInstance(), df);
\r
78 private void assertEqualDateString(StringBuffer buf) {
\r
79 assertEquals(aDateTimeString, buf.toString());
\r
82 private void assertEqualDateString(String str) {
\r
83 assertEquals(aDateTimeString, str);
\r
87 * Test method for 'com.ibm.icu.text.DateFormat.format(Object, StringBuffer, FieldPosition)'
\r
89 public final void testFormatObjectStringBufferFieldPosition() {
\r
90 assertEqualDateString(aDF.format(aDate, aBuf, anFP));
\r
94 * Test method for 'com.ibm.icu.text.DateFormat.format(Calendar, StringBuffer, FieldPosition)'
\r
96 public final void testFormatCalendarStringBufferFieldPosition() {
\r
97 assertEqualDateString(aDF.format(aCal, aBuf, anFP));
\r
101 * Test method for 'com.ibm.icu.text.DateFormat.format(Date, StringBuffer, FieldPosition)'
\r
103 public final void testFormatDateStringBufferFieldPosition() {
\r
104 assertEqualDateString(aDF.format(aDate, aBuf, anFP));
\r
108 * Test method for 'com.ibm.icu.text.DateFormat.format(Date)'
\r
110 public final void testFormatDate() {
\r
111 assertEqualDateString(aDF.format(aDate));
\r
115 * Test method for 'com.ibm.icu.text.DateFormat.parse(String)'
\r
117 public final void testParseString() throws Exception {
\r
118 assertEquals(aDate, aDF.parse(aDateTimeString));
\r
122 * Test method for 'com.ibm.icu.text.DateFormat.parse(String, Calendar, ParsePosition)'
\r
124 public final void testParseStringCalendarParsePosition() {
\r
125 aDF.parse(aDateTimeString, aCal, new ParsePosition(0));
\r
126 assertEquals(aDate, aCal.getTime());
\r
130 * Test method for 'com.ibm.icu.text.DateFormat.parse(String, ParsePosition)'
\r
132 public final void testParseStringParsePosition() {
\r
133 assertEquals(aDate, aDF.parse(aDateTimeString, new ParsePosition(0)));
\r
137 * Test method for 'com.ibm.icu.text.DateFormat.parseObject(String, ParsePosition)'
\r
139 public final void testParseObjectStringParsePosition() {
\r
140 assertEquals(aDate, aDF.parseObject(aDateTimeString, new ParsePosition(0)));
\r
144 * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance()'
\r
146 public final void testGetTimeInstance() {
\r
147 assertEquals(aTimeString, DateFormat.getTimeInstance().format(aDate));
\r
151 * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int)'
\r
153 public final void testGetTimeInstanceInt() {
\r
154 assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM).format(aDate));
\r
158 * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, Locale)'
\r
160 public final void testGetTimeInstanceIntLocale() {
\r
161 assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.US).format(aDate));
\r
165 * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, ULocale)'
\r
167 public final void testGetTimeInstanceIntULocale() {
\r
168 assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM, ULocale.US).format(aDate));
\r
172 * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance()'
\r
174 public final void testGetDateInstance() {
\r
175 assertEquals(aDateString, DateFormat.getDateInstance().format(aDate));
\r
179 * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int)'
\r
181 public final void testGetDateInstanceInt() {
\r
182 assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM).format(aDate));
\r
186 * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, Locale)'
\r
188 public final void testGetDateInstanceIntLocale() {
\r
189 assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US).format(aDate));
\r
193 * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, ULocale)'
\r
195 public final void testGetDateInstanceIntULocale() {
\r
196 assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM, ULocale.US).format(aDate));
\r
200 * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance()'
\r
202 public final void testGetDateTimeInstance() {
\r
203 assertEquals(aDateTimeString, DateFormat.getDateTimeInstance().format(aDate));
\r
207 * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int)'
\r
209 public final void testGetDateTimeInstanceIntInt() {
\r
210 assertEquals(aDateTimeString,
\r
211 DateFormat.getDateTimeInstance(
\r
212 DateFormat.MEDIUM, DateFormat.MEDIUM).format(aDate));
\r
216 * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, Locale)'
\r
218 public final void testGetDateTimeInstanceIntIntLocale() {
\r
219 assertEquals(aDateTimeString,
\r
220 DateFormat.getDateTimeInstance(
\r
221 DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US).format(aDate));
\r
225 * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, ULocale)'
\r
227 public final void testGetDateTimeInstanceIntIntULocale() {
\r
228 assertEquals(aDateTimeString,
\r
229 DateFormat.getDateTimeInstance(
\r
230 DateFormat.MEDIUM, DateFormat.MEDIUM, ULocale.US).format(aDate));
\r
234 * Test method for 'com.ibm.icu.text.DateFormat.getInstance()'
\r
236 public final void testGetInstance() {
\r
237 assertEquals(aShortDateTimeString, DateFormat.getInstance().format(aDate));
\r
241 * Test method for 'com.ibm.icu.text.DateFormat.getAvailableLocales()'
\r
243 public final void testGetAvailableLocales() {
\r
244 Locale[] locales = DateFormat.getAvailableLocales();
\r
245 if (ICUTestCase.testingWrapper) {
\r
246 ICUTestCase.assertArraysEqual(java.text.DateFormat.getAvailableLocales(), locales);
\r
248 assertNotNull(locales);
\r
253 * Test method for 'com.ibm.icu.text.DateFormat.setCalendar(Calendar)'
\r
255 public final void testSetCalendar() {
\r
256 Calendar cal = Calendar.getInstance();
\r
257 cal.setTimeZone(TimeZone.getTimeZone("EST"));
\r
258 DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
\r
259 df.setCalendar(cal);
\r
260 assertEquals("8:17 AM", df.format(aDate));
\r
264 * Test method for 'com.ibm.icu.text.DateFormat.getCalendar()'
\r
266 public final void testGetCalendar() {
\r
267 Calendar cal = Calendar.getInstance();
\r
268 cal.setTimeZone(TimeZone.getTimeZone("EST"));
\r
269 DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
\r
270 df.setCalendar(cal);
\r
271 assertEquals(cal, df.getCalendar());
\r
275 * Test method for 'com.ibm.icu.text.DateFormat.setNumberFormat(NumberFormat)'
\r
277 public final void testSetNumberFormat() {
\r
278 // no easy way to test effect of setting the number format
\r
279 NumberFormat nf = NumberFormat.getInstance();
\r
280 DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
\r
281 df.setNumberFormat(nf);
\r
282 // note, can't actually USE the dateformat since it changes the calendar
\r
283 assertEquals(nf, df.getNumberFormat());
\r
287 * Test method for 'com.ibm.icu.text.DateFormat.getNumberFormat()'
\r
289 public final void testGetNumberFormat() {
\r
290 // see testSetNumberFormat
\r
294 * Test method for 'com.ibm.icu.text.DateFormat.setTimeZone(TimeZone)'
\r
296 public final void testSetTimeZone() {
\r
297 DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
\r
298 TimeZone tz = TimeZone.getTimeZone("EST");
\r
299 df.setTimeZone(tz);
\r
300 assertEquals("8:17 AM", df.format(aDate));
\r
304 * Test method for 'com.ibm.icu.text.DateFormat.getTimeZone()'
\r
306 public final void testGetTimeZone() {
\r
307 DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
\r
308 TimeZone tz = TimeZone.getTimeZone("EST");
\r
309 df.setTimeZone(tz);
\r
310 assertEquals(tz, df.getTimeZone());
\r
314 * Test method for 'com.ibm.icu.text.DateFormat.setLenient(boolean)'
\r
316 public final void testSetLenient() throws Exception {
\r
317 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
\r
318 df.parse("2/31/90"); // succeeds, default is lenient
\r
319 df.setLenient(false);
\r
321 df.parse("2/31/90");
\r
322 throw new Exception("strict parse should have failed");
\r
324 catch (ParseException e) {
\r
325 // ok, this is what we expect
\r
330 * Test method for 'com.ibm.icu.text.DateFormat.isLenient()'
\r
332 public final void testIsLenient() {
\r
333 DateFormat df = DateFormat.getInstance();
\r
334 assertTrue(df.isLenient());
\r
335 df.setLenient(false);
\r
336 assertFalse(df.isLenient());
\r
340 * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, Locale)'
\r
342 public final void testGetDateInstanceCalendarIntLocale() {
\r
343 assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM, Locale.US).format(aDate));
\r
347 * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, ULocale)'
\r
349 public final void testGetDateInstanceCalendarIntULocale() {
\r
350 assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM, ULocale.US).format(aDate));
\r
354 * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, Locale)'
\r
356 public final void testGetTimeInstanceCalendarIntLocale() {
\r
357 assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM, Locale.US).format(aDate));
\r
361 * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, ULocale)'
\r
363 public final void testGetTimeInstanceCalendarIntULocale() {
\r
364 assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM, ULocale.US).format(aDate));
\r
368 * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, Locale)'
\r
370 public final void testGetDateTimeInstanceCalendarIntIntLocale() {
\r
371 assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT, Locale.US).format(aDate));
\r
375 * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, ULocale)'
\r
377 public final void testGetDateTimeInstanceCalendarIntIntULocale() {
\r
378 assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT, ULocale.US).format(aDate));
\r
382 * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, Locale)'
\r
384 public final void testGetInstanceCalendarLocale() {
\r
385 assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal, Locale.US).format(aDate));
\r
389 * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, ULocale)'
\r
391 public final void testGetInstanceCalendarULocale() {
\r
392 assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal, ULocale.US).format(aDate));
\r
396 * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar)'
\r
398 public final void testGetInstanceCalendar() {
\r
399 assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal).format(aDate));
\r
403 * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int)'
\r
405 public final void testGetDateInstanceCalendarInt() {
\r
406 assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM).format(aDate));
\r
410 * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int)'
\r
412 public final void testGetTimeInstanceCalendarInt() {
\r
413 assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM).format(aDate));
\r
417 * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int)'
\r
419 public final void testGetDateTimeInstanceCalendarIntInt() {
\r
420 assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT).format(aDate));
\r
424 * Test method for 'com.ibm.icu.text.DateFormat.toString()'
\r
426 public final void testToString() {
\r
427 assertNotNull(aDF.toString());
\r
431 * Test method for 'com.ibm.icu.text.DateFormat.clone()'
\r
433 public final void testClone() {
\r
434 // see testHashCode
\r
438 * Test method for 'com.ibm.icu.text.DateFormat.equals(Object)'
\r
440 public final void testEqualsObject() {
\r
441 // see testHashCode
\r