Home | History | Annotate | Download | only in tests
      1 /*
      2  *******************************************************************************
      3  * Copyright (C) 2006-2011, International Business Machines Corporation and    *
      4  * others. All Rights Reserved.                                                *
      5  *******************************************************************************
      6  */
      7 
      8 package com.ibm.icu.tests;
      9 
     10 import java.text.FieldPosition;
     11 import java.text.ParseException;
     12 import java.text.ParsePosition;
     13 import java.util.Date;
     14 import java.util.Locale;
     15 
     16 import com.ibm.icu.text.DateFormatSymbols;
     17 import com.ibm.icu.text.SimpleDateFormat;
     18 import com.ibm.icu.util.Calendar;
     19 import com.ibm.icu.util.TimeZone;
     20 import com.ibm.icu.util.ULocale;
     21 
     22 public class SimpleDateFormatTest extends ICUTestCase {
     23     private static final String mdy = "MMM dd yyyy";
     24     private static final String md2 = "MMM dd yy";
     25     private static final String hmz = "'The time is' HH:mm:ss zzz";
     26     private static final String hmzmdy = hmz + " 'on' " + mdy;
     27     private static final String hmzmdyStr = "The time is 15:05:20 CST on Jan 10 2006";
     28 
     29     private static final TimeZone tzc = TimeZone.getTimeZone("CST");
     30     private static final TimeZone tzp = TimeZone.getTimeZone("PST");
     31     private static final Calendar cal = Calendar.getInstance(tzc);
     32     private static final Date date;
     33     static {
     34         cal.clear();
     35         cal.set(2006, 0, 10, 15, 5, 20); // arrgh, doesn't clear millis
     36         date = cal.getTime();
     37     }
     38 
     39     /*
     40      * Test method for 'com.ibm.icu.text.SimpleDateFormat.format(Calendar, StringBuffer, FieldPosition)'
     41      */
     42     public void testFormatCalendarStringBufferFieldPosition() {
     43         StringBuffer buf = new StringBuffer();
     44         FieldPosition fp = new FieldPosition(0);
     45         SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
     46         sdf.format(cal, buf, fp);
     47         assertEquals(hmzmdyStr, buf.toString());
     48     }
     49 
     50     /*
     51      * Test method for 'com.ibm.icu.text.SimpleDateFormat.parse(String, Calendar, ParsePosition)'
     52      */
     53     public void testParseStringCalendarParsePosition() {
     54         Calendar cal = Calendar.getInstance(tzp);
     55         cal.clear();
     56         ParsePosition pp = new ParsePosition(0);
     57         SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
     58         sdf.parse(hmzmdyStr, cal, pp);
     59         assertEquals(date, cal.getTime());
     60         // note: java doesn't return the parsed time zone
     61     }
     62 
     63     /*
     64      * Test method for 'com.ibm.icu.text.SimpleDateFormat.clone()'
     65      */
     66     public void testClone() {
     67 
     68     }
     69 
     70     /*
     71      * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat()'
     72      */
     73     public void testSimpleDateFormat() {
     74         SimpleDateFormat sdf = new SimpleDateFormat();
     75         java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat();
     76         assertEquals(jsdf.format(date), sdf.format(date));
     77     }
     78 
     79     /*
     80      * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String)'
     81      */
     82     public void testSimpleDateFormatString() {
     83         SimpleDateFormat sdf = new SimpleDateFormat(mdy);
     84         java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy);
     85         assertEquals(jsdf.format(date), sdf.format(date));
     86     }
     87 
     88     /*
     89      * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, Locale)'
     90      */
     91     public void testSimpleDateFormatStringLocale() {
     92         Locale l = Locale.JAPAN;
     93         SimpleDateFormat sdf = new SimpleDateFormat(mdy, l);
     94         java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l);
     95         assertEquals(jsdf.format(date), sdf.format(date));
     96     }
     97 
     98     /*
     99      * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, ULocale)'
    100      */
    101     public void testSimpleDateFormatStringULocale() {
    102         ULocale l = ULocale.JAPAN;
    103         SimpleDateFormat sdf = new SimpleDateFormat(mdy, l);
    104         java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l.toLocale());
    105         assertEquals(jsdf.format(date), sdf.format(date));
    106     }
    107 
    108     /*
    109      * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, DateFormatSymbols)'
    110      */
    111     public void testSimpleDateFormatStringDateFormatSymbols() {
    112         Locale l = Locale.US;
    113         DateFormatSymbols dfs = new DateFormatSymbols(l);
    114         java.text.DateFormatSymbols jdfs = new java.text.DateFormatSymbols(l);
    115         SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs);
    116         java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, jdfs);
    117         assertEquals(jsdf.format(date), sdf.format(date));
    118     }
    119 
    120     /*
    121      * Test method for 'com.ibm.icu.text.SimpleDateFormat.set2DigitYearStart(Date)'
    122      */
    123     public void testSet2DigitYearStart() {
    124         SimpleDateFormat sdf = new SimpleDateFormat(md2);
    125         sdf.set2DigitYearStart(date);
    126         try {
    127             Date d = sdf.parse("Jan 15 04");
    128             assertNotEqual(-1, d.toString().indexOf("2104"));
    129         }
    130         catch (ParseException pe) {
    131             fail(pe.getMessage());
    132         }
    133     }
    134 
    135     /*
    136      * Test method for 'com.ibm.icu.text.SimpleDateFormat.get2DigitYearStart()'
    137      */
    138     public void testGet2DigitYearStart() {
    139         SimpleDateFormat sdf = new SimpleDateFormat(md2);
    140         sdf.set2DigitYearStart(date);
    141         assertEquals(date, sdf.get2DigitYearStart());
    142     }
    143 
    144     /*
    145      * Test method for 'com.ibm.icu.text.SimpleDateFormat.toPattern()'
    146      */
    147     public void testToPattern() {
    148         SimpleDateFormat sdf = new SimpleDateFormat(mdy);
    149         assertEquals(mdy, sdf.toPattern());
    150     }
    151 
    152     /*
    153      * Test method for 'com.ibm.icu.text.SimpleDateFormat.toLocalizedPattern()'
    154      */
    155     public void testToLocalizedPattern() {
    156         Locale l = Locale.getDefault();
    157         Locale.setDefault(Locale.US);
    158         SimpleDateFormat sdf = new SimpleDateFormat(mdy);
    159         assertEquals(mdy, sdf.toLocalizedPattern());
    160         Locale.setDefault(l);
    161     }
    162 
    163     /*
    164      * Test method for 'com.ibm.icu.text.SimpleDateFormat.applyPattern(String)'
    165      */
    166     public void testApplyPattern() {
    167         SimpleDateFormat sdf = new SimpleDateFormat();
    168         sdf.setTimeZone(tzc);
    169         sdf.applyPattern(hmzmdy);
    170         assertEquals(hmzmdyStr, sdf.format(date));
    171     }
    172 
    173     /*
    174      * Test method for 'com.ibm.icu.text.SimpleDateFormat.applyLocalizedPattern(String)'
    175      */
    176     public void testApplyLocalizedPattern() {
    177         SimpleDateFormat sdf = new SimpleDateFormat();
    178         sdf.setTimeZone(tzc);
    179         sdf.applyLocalizedPattern(hmzmdy);
    180         assertEquals(hmzmdyStr, sdf.format(date));
    181     }
    182 
    183     /*
    184      * Test method for 'com.ibm.icu.text.SimpleDateFormat.getDateFormatSymbols()'
    185      */
    186     public void testGetDateFormatSymbols() {
    187         DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
    188         SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs);
    189         assertEquals(dfs, sdf.getDateFormatSymbols());
    190     }
    191 
    192     /*
    193      * Test method for 'com.ibm.icu.text.SimpleDateFormat.setDateFormatSymbols(DateFormatSymbols)'
    194      */
    195     public void testSetDateFormatSymbols() {
    196         DateFormatSymbols dfs = new DateFormatSymbols(Locale.JAPAN);
    197         SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
    198         sdf.setDateFormatSymbols(dfs);
    199         // assumes Japanese symbols do not have gregorian month names
    200         assertEquals(-1, sdf.format(date).indexOf("Jan"));
    201     }
    202 }
    203