001: /*
002: *******************************************************************************
003: * Copyright (C) 2006, International Business Machines Corporation and *
004: * others. All Rights Reserved. *
005: *******************************************************************************
006: */
007:
008: package com.ibm.icu.tests;
009:
010: import java.text.FieldPosition;
011: import java.text.ParseException;
012: import java.text.ParsePosition;
013: import java.util.Date;
014: import java.util.Locale;
015:
016: import com.ibm.icu.text.DateFormat;
017: import com.ibm.icu.text.NumberFormat;
018: import com.ibm.icu.util.Calendar;
019: import com.ibm.icu.util.TimeZone;
020: import com.ibm.icu.util.ULocale;
021:
022: public class DateFormatTest extends ICUTestCase {
023: private Calendar aCal;
024: private Calendar anESTCal;
025: private Date aDate;
026: private String aDateString;
027: private String aTimeString;
028: private String anESTTimeString;
029: private String aDateTimeString;
030: private String aShortDateTimeString;
031: private String aDefaultESTDateTimeString;
032: private DateFormat aDF;
033: private StringBuffer aBuf;
034: private FieldPosition anFP;
035:
036: protected void setUp() throws Exception {
037: super .setUp();
038:
039: java.util.GregorianCalendar gcal = new java.util.GregorianCalendar();
040: gcal.clear();
041: gcal.set(java.util.GregorianCalendar.YEAR, 1990);
042: gcal.set(java.util.GregorianCalendar.MONTH,
043: java.util.GregorianCalendar.DECEMBER);
044: gcal.set(java.util.GregorianCalendar.DATE, 17);
045: gcal.set(java.util.GregorianCalendar.HOUR, 5);
046: gcal.set(java.util.GregorianCalendar.MINUTE, 17);
047: aCal = new Calendar(gcal);
048: anESTCal = Calendar.getInstance();
049: anESTCal.setTimeZone(TimeZone.getTimeZone("EST"));
050: aDate = gcal.getTime();
051: aDateString = "Dec 17, 1990"; // medium -- the default
052: aTimeString = "5:17:00 AM"; // medium
053: anESTTimeString = "8:17:00 AM";
054: aDateTimeString = "Dec 17, 1990 5:17:00 AM"; // medium, medium
055: aDefaultESTDateTimeString = "Dec 17, 1990 8:17 AM"; // medium, short -- the default
056: aShortDateTimeString = "12/17/90 5:17 AM"; // short, short
057: aDF = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,
058: DateFormat.MEDIUM, Locale.US);
059: aBuf = new StringBuffer();
060: anFP = new FieldPosition(0);
061: }
062:
063: /*
064: * Test method for 'com.ibm.icu.text.DateFormat.hashCode()'
065: */
066: public final void testHashCode() {
067: DateFormat df = DateFormat.getInstance();
068: DateFormat eq = DateFormat.getDateTimeInstance(
069: DateFormat.SHORT, DateFormat.SHORT);
070: testEHCS(df, eq, aDF);
071: }
072:
073: /*
074: * Test method for 'com.ibm.icu.text.DateFormat.DateFormat(DateFormat)'
075: */
076: public final void testDateFormat() {
077: DateFormat df = new DateFormat(java.text.DateFormat
078: .getInstance());
079: assertEquals(DateFormat.getInstance(), df);
080: }
081:
082: private void assertEqualDateString(StringBuffer buf) {
083: assertEquals(aDateTimeString, buf.toString());
084: }
085:
086: private void assertEqualDateString(String str) {
087: assertEquals(aDateTimeString, str);
088: }
089:
090: /*
091: * Test method for 'com.ibm.icu.text.DateFormat.format(Object, StringBuffer, FieldPosition)'
092: */
093: public final void testFormatObjectStringBufferFieldPosition() {
094: assertEqualDateString(aDF.format(aDate, aBuf, anFP));
095: }
096:
097: /*
098: * Test method for 'com.ibm.icu.text.DateFormat.format(Calendar, StringBuffer, FieldPosition)'
099: */
100: public final void testFormatCalendarStringBufferFieldPosition() {
101: assertEqualDateString(aDF.format(aCal, aBuf, anFP));
102: }
103:
104: /*
105: * Test method for 'com.ibm.icu.text.DateFormat.format(Date, StringBuffer, FieldPosition)'
106: */
107: public final void testFormatDateStringBufferFieldPosition() {
108: assertEqualDateString(aDF.format(aDate, aBuf, anFP));
109: }
110:
111: /*
112: * Test method for 'com.ibm.icu.text.DateFormat.format(Date)'
113: */
114: public final void testFormatDate() {
115: assertEqualDateString(aDF.format(aDate));
116: }
117:
118: /*
119: * Test method for 'com.ibm.icu.text.DateFormat.parse(String)'
120: */
121: public final void testParseString() throws Exception {
122: assertEquals(aDate, aDF.parse(aDateTimeString));
123: }
124:
125: /*
126: * Test method for 'com.ibm.icu.text.DateFormat.parse(String, Calendar, ParsePosition)'
127: */
128: public final void testParseStringCalendarParsePosition() {
129: aDF.parse(aDateTimeString, aCal, new ParsePosition(0));
130: assertEquals(aDate, aCal.getTime());
131: }
132:
133: /*
134: * Test method for 'com.ibm.icu.text.DateFormat.parse(String, ParsePosition)'
135: */
136: public final void testParseStringParsePosition() {
137: assertEquals(aDate, aDF.parse(aDateTimeString,
138: new ParsePosition(0)));
139: }
140:
141: /*
142: * Test method for 'com.ibm.icu.text.DateFormat.parseObject(String, ParsePosition)'
143: */
144: public final void testParseObjectStringParsePosition() {
145: assertEquals(aDate, aDF.parseObject(aDateTimeString,
146: new ParsePosition(0)));
147: }
148:
149: /*
150: * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance()'
151: */
152: public final void testGetTimeInstance() {
153: assertEquals(aTimeString, DateFormat.getTimeInstance().format(
154: aDate));
155: }
156:
157: /*
158: * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int)'
159: */
160: public final void testGetTimeInstanceInt() {
161: assertEquals(aTimeString, DateFormat.getTimeInstance(
162: DateFormat.MEDIUM).format(aDate));
163: }
164:
165: /*
166: * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, Locale)'
167: */
168: public final void testGetTimeInstanceIntLocale() {
169: assertEquals(aTimeString, DateFormat.getTimeInstance(
170: DateFormat.MEDIUM, Locale.US).format(aDate));
171: }
172:
173: /*
174: * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, ULocale)'
175: */
176: public final void testGetTimeInstanceIntULocale() {
177: assertEquals(aTimeString, DateFormat.getTimeInstance(
178: DateFormat.MEDIUM, ULocale.US).format(aDate));
179: }
180:
181: /*
182: * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance()'
183: */
184: public final void testGetDateInstance() {
185: assertEquals(aDateString, DateFormat.getDateInstance().format(
186: aDate));
187: }
188:
189: /*
190: * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int)'
191: */
192: public final void testGetDateInstanceInt() {
193: assertEquals(aDateString, DateFormat.getDateInstance(
194: DateFormat.MEDIUM).format(aDate));
195: }
196:
197: /*
198: * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, Locale)'
199: */
200: public final void testGetDateInstanceIntLocale() {
201: assertEquals(aDateString, DateFormat.getDateInstance(
202: DateFormat.MEDIUM, Locale.US).format(aDate));
203: }
204:
205: /*
206: * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, ULocale)'
207: */
208: public final void testGetDateInstanceIntULocale() {
209: assertEquals(aDateString, DateFormat.getDateInstance(
210: DateFormat.MEDIUM, ULocale.US).format(aDate));
211: }
212:
213: /*
214: * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance()'
215: */
216: public final void testGetDateTimeInstance() {
217: assertEquals(aDateTimeString, DateFormat.getDateTimeInstance()
218: .format(aDate));
219: }
220:
221: /*
222: * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int)'
223: */
224: public final void testGetDateTimeInstanceIntInt() {
225: assertEquals(aDateTimeString, DateFormat.getDateTimeInstance(
226: DateFormat.MEDIUM, DateFormat.MEDIUM).format(aDate));
227: }
228:
229: /*
230: * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, Locale)'
231: */
232: public final void testGetDateTimeInstanceIntIntLocale() {
233: assertEquals(aDateTimeString, DateFormat.getDateTimeInstance(
234: DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US)
235: .format(aDate));
236: }
237:
238: /*
239: * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, ULocale)'
240: */
241: public final void testGetDateTimeInstanceIntIntULocale() {
242: assertEquals(aDateTimeString, DateFormat.getDateTimeInstance(
243: DateFormat.MEDIUM, DateFormat.MEDIUM, ULocale.US)
244: .format(aDate));
245: }
246:
247: /*
248: * Test method for 'com.ibm.icu.text.DateFormat.getInstance()'
249: */
250: public final void testGetInstance() {
251: assertEquals(aShortDateTimeString, DateFormat.getInstance()
252: .format(aDate));
253: }
254:
255: /*
256: * Test method for 'com.ibm.icu.text.DateFormat.getAvailableLocales()'
257: */
258: public final void testGetAvailableLocales() {
259: Locale[] locales = DateFormat.getAvailableLocales();
260: if (ICUTestCase.testingWrapper) {
261: ICUTestCase.assertArraysEqual(java.text.DateFormat
262: .getAvailableLocales(), locales);
263: } else {
264: assertNotNull(locales);
265: }
266: }
267:
268: /*
269: * Test method for 'com.ibm.icu.text.DateFormat.setCalendar(Calendar)'
270: */
271: public final void testSetCalendar() {
272: Calendar cal = Calendar.getInstance();
273: cal.setTimeZone(TimeZone.getTimeZone("EST"));
274: DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
275: df.setCalendar(cal);
276: assertEquals("8:17 AM", df.format(aDate));
277: }
278:
279: /*
280: * Test method for 'com.ibm.icu.text.DateFormat.getCalendar()'
281: */
282: public final void testGetCalendar() {
283: Calendar cal = Calendar.getInstance();
284: cal.setTimeZone(TimeZone.getTimeZone("EST"));
285: DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
286: df.setCalendar(cal);
287: assertEquals(cal, df.getCalendar());
288: }
289:
290: /*
291: * Test method for 'com.ibm.icu.text.DateFormat.setNumberFormat(NumberFormat)'
292: */
293: public final void testSetNumberFormat() {
294: // no easy way to test effect of setting the number format
295: NumberFormat nf = NumberFormat.getInstance();
296: DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
297: df.setNumberFormat(nf);
298: // note, can't actually USE the dateformat since it changes the calendar
299: assertEquals(nf, df.getNumberFormat());
300: }
301:
302: /*
303: * Test method for 'com.ibm.icu.text.DateFormat.getNumberFormat()'
304: */
305: public final void testGetNumberFormat() {
306: // see testSetNumberFormat
307: }
308:
309: /*
310: * Test method for 'com.ibm.icu.text.DateFormat.setTimeZone(TimeZone)'
311: */
312: public final void testSetTimeZone() {
313: DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
314: TimeZone tz = TimeZone.getTimeZone("EST");
315: df.setTimeZone(tz);
316: assertEquals("8:17 AM", df.format(aDate));
317: }
318:
319: /*
320: * Test method for 'com.ibm.icu.text.DateFormat.getTimeZone()'
321: */
322: public final void testGetTimeZone() {
323: DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
324: TimeZone tz = TimeZone.getTimeZone("EST");
325: df.setTimeZone(tz);
326: assertEquals(tz, df.getTimeZone());
327: }
328:
329: /*
330: * Test method for 'com.ibm.icu.text.DateFormat.setLenient(boolean)'
331: */
332: public final void testSetLenient() throws Exception {
333: DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
334: df.parse("2/31/90"); // succeeds, default is lenient
335: df.setLenient(false);
336: try {
337: df.parse("2/31/90");
338: throw new Exception("strict parse should have failed");
339: } catch (ParseException e) {
340: // ok, this is what we expect
341: }
342: }
343:
344: /*
345: * Test method for 'com.ibm.icu.text.DateFormat.isLenient()'
346: */
347: public final void testIsLenient() {
348: DateFormat df = DateFormat.getInstance();
349: assertTrue(df.isLenient());
350: df.setLenient(false);
351: assertFalse(df.isLenient());
352: }
353:
354: /*
355: * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, Locale)'
356: */
357: public final void testGetDateInstanceCalendarIntLocale() {
358: assertEquals(aDateString, DateFormat.getDateInstance(aCal,
359: DateFormat.MEDIUM, Locale.US).format(aDate));
360: }
361:
362: /*
363: * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, ULocale)'
364: */
365: public final void testGetDateInstanceCalendarIntULocale() {
366: assertEquals(aDateString, DateFormat.getDateInstance(aCal,
367: DateFormat.MEDIUM, ULocale.US).format(aDate));
368: }
369:
370: /*
371: * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, Locale)'
372: */
373: public final void testGetTimeInstanceCalendarIntLocale() {
374: assertEquals(anESTTimeString, DateFormat.getTimeInstance(
375: anESTCal, DateFormat.MEDIUM, Locale.US).format(aDate));
376: }
377:
378: /*
379: * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, ULocale)'
380: */
381: public final void testGetTimeInstanceCalendarIntULocale() {
382: assertEquals(anESTTimeString, DateFormat.getTimeInstance(
383: anESTCal, DateFormat.MEDIUM, ULocale.US).format(aDate));
384: }
385:
386: /*
387: * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, Locale)'
388: */
389: public final void testGetDateTimeInstanceCalendarIntIntLocale() {
390: assertEquals(aDefaultESTDateTimeString, DateFormat
391: .getDateTimeInstance(anESTCal, DateFormat.MEDIUM,
392: DateFormat.SHORT, Locale.US).format(aDate));
393: }
394:
395: /*
396: * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, ULocale)'
397: */
398: public final void testGetDateTimeInstanceCalendarIntIntULocale() {
399: assertEquals(aDefaultESTDateTimeString, DateFormat
400: .getDateTimeInstance(anESTCal, DateFormat.MEDIUM,
401: DateFormat.SHORT, ULocale.US).format(aDate));
402: }
403:
404: /*
405: * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, Locale)'
406: */
407: public final void testGetInstanceCalendarLocale() {
408: assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(
409: anESTCal, Locale.US).format(aDate));
410: }
411:
412: /*
413: * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, ULocale)'
414: */
415: public final void testGetInstanceCalendarULocale() {
416: assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(
417: anESTCal, ULocale.US).format(aDate));
418: }
419:
420: /*
421: * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar)'
422: */
423: public final void testGetInstanceCalendar() {
424: assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(
425: anESTCal).format(aDate));
426: }
427:
428: /*
429: * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int)'
430: */
431: public final void testGetDateInstanceCalendarInt() {
432: assertEquals(aDateString, DateFormat.getDateInstance(aCal,
433: DateFormat.MEDIUM).format(aDate));
434: }
435:
436: /*
437: * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int)'
438: */
439: public final void testGetTimeInstanceCalendarInt() {
440: assertEquals(anESTTimeString, DateFormat.getTimeInstance(
441: anESTCal, DateFormat.MEDIUM).format(aDate));
442: }
443:
444: /*
445: * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int)'
446: */
447: public final void testGetDateTimeInstanceCalendarIntInt() {
448: assertEquals(aDefaultESTDateTimeString, DateFormat
449: .getDateTimeInstance(anESTCal, DateFormat.MEDIUM,
450: DateFormat.SHORT).format(aDate));
451: }
452:
453: /*
454: * Test method for 'com.ibm.icu.text.DateFormat.toString()'
455: */
456: public final void testToString() {
457: assertNotNull(aDF.toString());
458: }
459:
460: /*
461: * Test method for 'com.ibm.icu.text.DateFormat.clone()'
462: */
463: public final void testClone() {
464: // see testHashCode
465: }
466:
467: /*
468: * Test method for 'com.ibm.icu.text.DateFormat.equals(Object)'
469: */
470: public final void testEqualsObject() {
471: // see testHashCode
472: }
473: }
|