1 /*****************************************************************************************
\r
3 * Copyright (C) 1996-2010, International Business Machines
\r
4 * Corporation and others. All Rights Reserved.
\r
8 * Port From: JDK 1.4b1 : java.text.Format.IntlTestDateFormatAPI
\r
9 * Source File: java/text/format/IntlTestDateFormatAPI.java
\r
14 @summary test International Date Format API
\r
17 package com.ibm.icu.dev.test.format;
\r
19 import java.text.FieldPosition;
\r
20 import java.text.ParseException;
\r
21 import java.text.ParsePosition;
\r
22 import java.util.Date;
\r
23 import java.util.Locale;
\r
25 import com.ibm.icu.text.DateFormat;
\r
26 import com.ibm.icu.text.NumberFormat;
\r
27 import com.ibm.icu.util.Calendar;
\r
28 import com.ibm.icu.util.TimeZone;
\r
30 public class IntlTestDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk
\r
32 public static void main(String[] args) throws Exception {
\r
33 new IntlTestDateFormatAPI().run(args);
\r
36 // Test that the equals method works correctly.
\r
37 public void TestEquals()
\r
39 // Create two objects at different system times
\r
40 DateFormat a = DateFormat.getInstance();
\r
41 Date start = Calendar.getInstance().getTime();
\r
43 // changed to remove compiler warnings.
\r
44 if (!start.equals(Calendar.getInstance().getTime())) {
\r
45 break; // Wait for time to change
\r
48 DateFormat b = DateFormat.getInstance();
\r
51 errln("FAIL: DateFormat objects created at different times are unequal.");
\r
53 // Why has this test been disabled??? - aliu
\r
54 // if (b instanceof SimpleDateFormat)
\r
56 // //double ONE_YEAR = 365*24*60*60*1000.0; //The variable is never used
\r
58 // ((SimpleDateFormat)b).setTwoDigitStartDate(start.getTime() + 50*ONE_YEAR);
\r
60 // errln("FAIL: DateFormat objects with different two digit start dates are equal.");
\r
62 // catch (Exception e) {
\r
63 // errln("FAIL: setTwoDigitStartDate failed.");
\r
68 // This test checks various generic API methods in DateFormat to achieve 100% API coverage.
\r
69 public void TestAPI()
\r
71 logln("DateFormat API test---"); logln("");
\r
72 Locale.setDefault(Locale.ENGLISH);
\r
75 // ======= Test constructors
\r
77 logln("Testing DateFormat constructors");
\r
79 DateFormat def = DateFormat.getInstance();
\r
80 DateFormat fr = DateFormat.getTimeInstance(DateFormat.FULL, Locale.FRENCH);
\r
81 DateFormat it = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.ITALIAN);
\r
82 DateFormat de = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.GERMAN);
\r
84 // ======= Test equality
\r
86 logln("Testing equality operator");
\r
88 if( fr.equals(it) ) {
\r
89 errln("ERROR: equals failed");
\r
92 // ======= Test various format() methods
\r
94 logln("Testing various format() methods");
\r
96 Date d = new Date((long)837039928046.0);
\r
98 StringBuffer res1 = new StringBuffer();
\r
99 StringBuffer res2 = new StringBuffer();
\r
100 String res3 = new String();
\r
101 FieldPosition pos1 = new FieldPosition(0);
\r
102 FieldPosition pos2 = new FieldPosition(0);
\r
104 res1 = fr.format(d, res1, pos1);
\r
105 logln("" + d.getTime() + " formatted to " + res1);
\r
107 res2 = it.format(d, res2, pos2);
\r
108 logln("" + d.getTime() + " formatted to " + res2);
\r
110 res3 = de.format(d);
\r
111 logln("" + d.getTime() + " formatted to " + res3);
\r
113 // ======= Test parse()
\r
115 logln("Testing parse()");
\r
117 String text = new String("02/03/76 2:50 AM, CST");
\r
118 Object result1 = new Date();
\r
119 Date result2 = new Date();
\r
120 Date result3 = new Date();
\r
121 ParsePosition pos = new ParsePosition(0);
\r
122 ParsePosition pos01 = new ParsePosition(0);
\r
124 result1 = def.parseObject(text, pos);
\r
125 if (result1 == null) {
\r
126 errln("ERROR: parseObject() failed for " + text);
\r
128 logln(text + " parsed into " + ((Date)result1).getTime());
\r
131 result2 = def.parse(text);
\r
133 catch (ParseException e) {
\r
134 errln("ERROR: parse() failed");
\r
136 logln(text + " parsed into " + result2.getTime());
\r
138 result3 = def.parse(text, pos01);
\r
139 if (result3 == null) {
\r
140 errln("ERROR: parse() failed for " + text);
\r
142 logln(text + " parsed into " + result3.getTime());
\r
145 // ======= Test getters and setters
\r
147 logln("Testing getters and setters");
\r
149 final Locale[] locales = DateFormat.getAvailableLocales();
\r
150 long count = locales.length;
\r
151 logln("Got " + count + " locales" );
\r
154 // These locales should be included in the result
\r
155 final Locale[] samples = {
\r
156 new Locale("zh", "CN"),
\r
157 new Locale("zh", "TW"),
\r
158 new Locale("zh", "HK"),
\r
159 new Locale("sr", "RS"),
\r
161 boolean[] available = new boolean[samples.length];
\r
162 for(int i = 0; i < count; i++) {
\r
164 name = locales[i].getDisplayName();
\r
166 for (int j = 0; j < samples.length; j++) {
\r
167 if (locales[i].equals(samples[j])) {
\r
168 available[j] = true;
\r
173 for (int i = 0; i < available.length; i++) {
\r
174 if (!available[i]) {
\r
175 errln("ERROR: missing Locale: " + samples[i]);
\r
179 fr.setLenient(it.isLenient());
\r
180 if(fr.isLenient() != it.isLenient()) {
\r
181 errln("ERROR: setLenient() failed");
\r
184 final Calendar cal = def.getCalendar();
\r
185 Calendar newCal = (Calendar) cal.clone();
\r
186 de.setCalendar(newCal);
\r
187 it.setCalendar(newCal);
\r
188 if( ! de.getCalendar().equals(it.getCalendar())) {
\r
189 errln("ERROR: set Calendar() failed");
\r
192 final NumberFormat nf = def.getNumberFormat();
\r
193 NumberFormat newNf = (NumberFormat) nf.clone();
\r
194 de.setNumberFormat(newNf);
\r
195 it.setNumberFormat(newNf);
\r
196 if( ! de.getNumberFormat().equals(it.getNumberFormat())) {
\r
197 errln("ERROR: set NumberFormat() failed");
\r
200 final TimeZone tz = def.getTimeZone();
\r
201 TimeZone newTz = (TimeZone) tz.clone();
\r
202 de.setTimeZone(newTz);
\r
203 it.setTimeZone(newTz);
\r
204 if( ! de.getTimeZone().equals(it.getTimeZone())) {
\r
205 errln("ERROR: set TimeZone() failed");
\r
208 // ======= Test getStaticClassID()
\r
210 // logln("Testing instanceof()");
\r
213 // DateFormat test = new SimpleDateFormat();
\r
215 // if (! (test instanceof SimpleDateFormat)) {
\r
216 // errln("ERROR: instanceof failed");
\r
219 // catch (Exception e) {
\r
220 // errln("ERROR: Couldn't create a DateFormat");
\r