]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / format / IntlTestDateFormatAPI.java
1 /*****************************************************************************************\r
2  *\r
3  *   Copyright (C) 1996-2010, International Business Machines\r
4  *   Corporation and others.  All Rights Reserved.\r
5  **/\r
6 \r
7 /** \r
8  * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormatAPI\r
9  * Source File: java/text/format/IntlTestDateFormatAPI.java\r
10  **/\r
11 \r
12 /*\r
13     @test 1.4 98/03/06\r
14     @summary test International Date Format API\r
15 */\r
16 \r
17 package com.ibm.icu.dev.test.format;\r
18 \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
24 \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
29 \r
30 public class IntlTestDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk\r
31 {\r
32     public static void main(String[] args) throws Exception {\r
33         new IntlTestDateFormatAPI().run(args);\r
34     }\r
35 \r
36     // Test that the equals method works correctly.\r
37     public void TestEquals()\r
38     {\r
39         // Create two objects at different system times\r
40         DateFormat a = DateFormat.getInstance();\r
41         Date start = Calendar.getInstance().getTime();\r
42         while (true) {\r
43             // changed to remove compiler warnings.\r
44             if (!start.equals(Calendar.getInstance().getTime())) {\r
45                 break; // Wait for time to change\r
46             }\r
47         }\r
48         DateFormat b = DateFormat.getInstance();\r
49 \r
50         if (!(a.equals(b)))\r
51             errln("FAIL: DateFormat objects created at different times are unequal.");\r
52 \r
53         // Why has this test been disabled??? - aliu\r
54 //        if (b instanceof SimpleDateFormat)\r
55 //        {\r
56 //            //double ONE_YEAR = 365*24*60*60*1000.0; //The variable is never used\r
57 //            try {\r
58 //                ((SimpleDateFormat)b).setTwoDigitStartDate(start.getTime() + 50*ONE_YEAR);\r
59 //                if (a.equals(b))\r
60 //                    errln("FAIL: DateFormat objects with different two digit start dates are equal.");\r
61 //            }\r
62 //            catch (Exception e) {\r
63 //                errln("FAIL: setTwoDigitStartDate failed.");\r
64 //            }\r
65 //        }\r
66     }\r
67 \r
68     // This test checks various generic API methods in DateFormat to achieve 100% API coverage.\r
69     public void TestAPI()\r
70     {\r
71         logln("DateFormat API test---"); logln("");\r
72         Locale.setDefault(Locale.ENGLISH);\r
73 \r
74 \r
75         // ======= Test constructors\r
76 \r
77         logln("Testing DateFormat constructors");\r
78 \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
83 \r
84         // ======= Test equality\r
85 \r
86         logln("Testing equality operator");\r
87 \r
88         if( fr.equals(it) ) {\r
89             errln("ERROR: equals failed");\r
90         }\r
91 \r
92         // ======= Test various format() methods\r
93 \r
94         logln("Testing various format() methods");\r
95 \r
96         Date d = new Date((long)837039928046.0);\r
97 \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
103 \r
104         res1 = fr.format(d, res1, pos1);\r
105         logln("" + d.getTime() + " formatted to " + res1);\r
106 \r
107         res2 = it.format(d, res2, pos2);\r
108         logln("" + d.getTime() + " formatted to " + res2);\r
109 \r
110         res3 = de.format(d);\r
111         logln("" + d.getTime() + " formatted to " + res3);\r
112 \r
113         // ======= Test parse()\r
114 \r
115         logln("Testing parse()");\r
116 \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
123 \r
124         result1 = def.parseObject(text, pos);\r
125         if (result1 == null) {\r
126             errln("ERROR: parseObject() failed for " + text);\r
127         }\r
128         logln(text + " parsed into " + ((Date)result1).getTime());\r
129 \r
130         try {\r
131             result2 = def.parse(text);\r
132         }\r
133         catch (ParseException e) {\r
134             errln("ERROR: parse() failed");\r
135         }\r
136         logln(text + " parsed into " + result2.getTime());\r
137 \r
138         result3 = def.parse(text, pos01);\r
139         if (result3 == null) {\r
140             errln("ERROR: parse() failed for " + text);\r
141         }\r
142         logln(text + " parsed into " + result3.getTime());\r
143 \r
144 \r
145         // ======= Test getters and setters\r
146 \r
147         logln("Testing getters and setters");\r
148 \r
149         final Locale[] locales = DateFormat.getAvailableLocales();\r
150         long count = locales.length;\r
151         logln("Got " + count + " locales" );\r
152 \r
153         // Ticket#6280\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
160         };\r
161         boolean[] available = new boolean[samples.length];\r
162         for(int i = 0; i < count; i++) {\r
163             String name;\r
164             name = locales[i].getDisplayName();\r
165             logln(name);\r
166             for (int j = 0; j < samples.length; j++) {\r
167                 if (locales[i].equals(samples[j])) {\r
168                     available[j] = true;\r
169                     break;\r
170                 }\r
171             }\r
172         }\r
173         for (int i = 0; i < available.length; i++) {\r
174             if (!available[i]) {\r
175                 errln("ERROR: missing Locale: " + samples[i]);\r
176             }\r
177         }\r
178 \r
179         fr.setLenient(it.isLenient());\r
180         if(fr.isLenient() != it.isLenient()) {\r
181             errln("ERROR: setLenient() failed");\r
182         }\r
183 \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
190         }\r
191 \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
198         }\r
199 \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
206         }\r
207 \r
208         // ======= Test getStaticClassID()\r
209 \r
210 //        logln("Testing instanceof()");\r
211 \r
212 //        try {\r
213 //            DateFormat test = new SimpleDateFormat();\r
214 \r
215 //            if (! (test instanceof SimpleDateFormat)) {\r
216 //                errln("ERROR: instanceof failed");\r
217 //            }\r
218 //        }\r
219 //        catch (Exception e) {\r
220 //            errln("ERROR: Couldn't create a DateFormat");\r
221 //        }\r
222     }\r
223 }\r