]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / format / DateFormatRegressionTestJ.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2001-2010, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 \r
8 /*\r
9  * New added, 2001-10-17 [Jing/GCL]\r
10  */\r
11 \r
12 package com.ibm.icu.dev.test.format;\r
13 \r
14 import java.text.ParseException;\r
15 import java.text.ParsePosition;\r
16 import java.util.Date;\r
17 import java.util.Locale;\r
18 \r
19 import com.ibm.icu.text.DateFormat;\r
20 import com.ibm.icu.text.DateFormatSymbols;\r
21 import com.ibm.icu.text.SimpleDateFormat;\r
22 import com.ibm.icu.util.Calendar;\r
23 import com.ibm.icu.util.TimeZone;\r
24 \r
25 public class DateFormatRegressionTestJ extends com.ibm.icu.dev.test.TestFmwk {\r
26     \r
27     private static final String TIME_STRING = "2000/11/17 08:01:00";\r
28     private static final long UTC_LONG = 974476860000L;\r
29     private static SimpleDateFormat sdf_;\r
30     \r
31     protected void init()throws Exception{\r
32         sdf_ = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");\r
33         \r
34     }\r
35     public static void main(String[] args) throws Exception {\r
36         new DateFormatRegressionTestJ().run(args);\r
37     }\r
38     \r
39     //Return value of getAmPmStrings\r
40     public void Test4103926() {\r
41         String act_Ampms[];\r
42         String exp_Ampms[]={"AM","PM"};\r
43         Locale.setDefault(Locale.US);\r
44         \r
45         DateFormatSymbols dfs = new DateFormatSymbols();\r
46         act_Ampms = dfs.getAmPmStrings();\r
47         if(act_Ampms.length != exp_Ampms.length) {\r
48             errln("The result is not expected!");\r
49         } else {\r
50             for(int i =0; i<act_Ampms.length; i++) {\r
51                 if(!act_Ampms[i].equals(exp_Ampms[i]))\r
52                     errln("The result is not expected!");\r
53             }\r
54         }\r
55     }\r
56     \r
57     //Missing digit in millisecone format in SimpleDateFormat \r
58     public void Test4148168() {\r
59             Date d = new Date(1002705212906l); \r
60             String[] ISOPattern = {\r
61                 "''yyyy-MM-dd-hh.mm.ss.S''", "''yyyy-MM-dd-hh.mm.ss.SS''", \r
62                 "''yyyy-MM-dd-hh.mm.ss.SSS''", "''yyyy-MM-dd-hh.mm.ss.SSSS''", \r
63                 "''yyyy-MM-dd-hh.mm.ss.SSSSS''", "''yyyy-MM-dd-hh.mm.ss.SSSSSS''", \r
64                 "''yyyy-MM-dd-hh.mm.ss.SSSSSSS''", "''yyyy-MM-dd-hh.mm.ss.SSS000''"};\r
65             SimpleDateFormat aSimpleDF = (SimpleDateFormat)DateFormat.getDateTimeInstance();\r
66     \r
67             for(int i = 0; i<ISOPattern.length; i++) {\r
68                 aSimpleDF.applyPattern( ISOPattern[i] );\r
69                 logln( "Pattern = " + aSimpleDF.toPattern());\r
70                 logln( "Format = " + aSimpleDF.format(d));\r
71             }\r
72     }\r
73     \r
74     //DateFormat getDateTimeInstance(int, int), invalid styles no exception\r
75     public void Test4213086() {\r
76         Date someDate = new Date();\r
77         String d=null;\r
78         try {\r
79             DateFormat df2 = DateFormat.getDateTimeInstance(2, -2);\r
80             d = df2.format(someDate);\r
81             errln("we should catch an exception here");\r
82         } catch(Exception e){\r
83             logln("dateStyle = 2" + "\t timeStyle = -2");\r
84             logln("Exception caught!");\r
85         }            \r
86         \r
87         try {\r
88             DateFormat df3 = DateFormat.getDateTimeInstance(4, 2);\r
89             d = df3.format(someDate);\r
90             errln("we should catch an exception here");\r
91         } catch(Exception e){\r
92             logln("dateStyle = 4" + "\t timeStyle = 2");\r
93             logln("Exception caught!");\r
94             logln("********************************************");\r
95         }\r
96     \r
97         try {\r
98             DateFormat df4 = DateFormat.getDateTimeInstance(-12, -12);\r
99             d = df4.format(someDate);\r
100             errln("we should catch an exception here");\r
101         } catch(Exception e){\r
102             logln("dateStyle = -12" + "\t timeStyle = -12");\r
103             logln("Exception caught!");\r
104             logln("********************************************");\r
105         }\r
106     \r
107         try{\r
108             DateFormat df5 = DateFormat.getDateTimeInstance(2, 123);\r
109             d = df5.format(someDate);    \r
110             errln("we should catch an exception here");\r
111         } catch(Exception e){\r
112             logln("dateStyle = 2" + "\t timeStyle = 123");\r
113             logln("Exception caught!");\r
114             logln("********************************************");\r
115         }\r
116         //read the value in d to get rid of the warning\r
117         if(d!=null){\r
118             logln("The value of d: " + d);\r
119         }\r
120     }\r
121     \r
122     //DateFormat.format works wrongly?\r
123     public void Test4250359() {\r
124         Locale.setDefault(Locale.US);\r
125         Calendar cal = Calendar.getInstance();\r
126         cal.clear();\r
127         cal.set(101 + 1900, 9, 9, 17, 53);\r
128         Date d = cal.getTime();\r
129         DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT);\r
130         String act_result = tf.format(d);\r
131         String exp_result = "5:53 PM";\r
132         \r
133         if(!act_result.equals(exp_result)){\r
134             errln("The result is not expected");\r
135         }\r
136     }\r
137     \r
138     //pattern "s.S, parse '1ms'"\r
139     public void Test4253490() {\r
140         Date d = new Date(1002705212231l);\r
141     \r
142         String[] ISOPattern = {\r
143                 "''yyyy-MM-dd-hh.mm.ss.S''", \r
144                 "''yyyy-MM-dd-hh.mm.ss.SS''", \r
145                 "''yyyy-MM-dd-hh.mm.ss.SSS''", \r
146                 "''yyyy-MM-dd-hh.mm.ss.SSSS''", \r
147                 "''yyyy-MM-dd-hh.mm.ss.SSSSS''", \r
148                 "''yyyy-MM-dd-hh.mm.ss.SSSSSS''", \r
149                 "''yyyy-MM-dd-hh.mm.ss.SSSSSSS''"}; \r
150     \r
151         SimpleDateFormat aSimpleDF = (SimpleDateFormat) DateFormat.getDateTimeInstance();\r
152         for (int i = 0; i < ISOPattern.length; i++) {\r
153             aSimpleDF.applyPattern(ISOPattern[i]);\r
154             logln("Pattern = " + aSimpleDF.toPattern());\r
155             logln("Format = " + aSimpleDF.format(d));\r
156         }\r
157     }\r
158     \r
159     //about regression test\r
160     public void Test4266432() {\r
161         Locale.setDefault(Locale.JAPAN);\r
162         Locale loc = Locale.getDefault();\r
163         String dateFormat = "MM/dd/yy HH:mm:ss zzz";\r
164         SimpleDateFormat fmt = new SimpleDateFormat(dateFormat);\r
165     \r
166         ParsePosition p0 = new ParsePosition(0);\r
167         logln("Under  " + loc +"  locale");\r
168         Date d = fmt.parse("01/22/92 04:52:00 GMT", p0);\r
169         logln(d.toString());\r
170     }\r
171     \r
172     //SimpleDateFormat inconsistent for number of digits for years\r
173     public void Test4358730() {\r
174         SimpleDateFormat sdf = new SimpleDateFormat();\r
175         Calendar cal = Calendar.getInstance();\r
176         cal.clear();\r
177         cal.set(2001,11,10);\r
178         Date today = cal.getTime();\r
179     \r
180         sdf.applyPattern("MM d y");\r
181         logln(sdf.format(today));\r
182         sdf.applyPattern("MM d yy");\r
183         logln(sdf.format(today));\r
184     \r
185         sdf.applyPattern("MM d yyy");\r
186         logln(sdf.format(today));\r
187     \r
188         sdf.applyPattern("MM d yyyy");\r
189         logln(sdf.format(today));\r
190     \r
191         sdf.applyPattern("MM d yyyyy");\r
192         logln(sdf.format(today));\r
193     }\r
194     \r
195     //Parse invalid string\r
196     public void Test4375399() {\r
197         final String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");\r
198         SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.JAPAN);\r
199         try{\r
200             Date currentTime = sdf.parse("vggf 20  01.0 9.29 ap. J.-C. at 05:26:33 GMT+08:00",\r
201                                 new ParsePosition(0));\r
202             if(currentTime ==null)\r
203                 logln("parse right");\r
204         } catch(Exception e){\r
205             errln("Error");\r
206         }\r
207     }\r
208     /*\r
209     public void Test4407042() {\r
210         DateParseThread d1 = new DateParseThread();\r
211         DateFormatThread d2 = new DateFormatThread();\r
212         d1.start();\r
213         d2.start();\r
214         try {\r
215             logln("test");\r
216             Thread.sleep(1000);\r
217         } catch (Exception e) {}\r
218     }*/\r
219     \r
220     public void Test4468663() {\r
221         Date d =new Date(-93716671115767l);\r
222         String origin_d = d.toString();\r
223         String str;\r
224         final String pattern = new String("EEEE, MMMM d, yyyy");\r
225         SimpleDateFormat sdf = new SimpleDateFormat(pattern);\r
226 \r
227         if (sdf.getTimeZone().useDaylightTime()) {\r
228             logln("original date: " + origin_d.toString());\r
229             str = sdf.format(d);\r
230             logln(" after format----->" + str);\r
231             \r
232             d = sdf.parse(str, new ParsePosition(0));\r
233             logln(" after parse----->" + d.toString());\r
234     \r
235             str = sdf.format(d);\r
236             logln(" after format----->" + str);\r
237     \r
238             d = sdf.parse(str, new ParsePosition(0));\r
239             logln(" after parse----->" + d.toString());\r
240     \r
241             str = sdf.format(d);\r
242             logln(" after format----->" + str);        \r
243         }\r
244     }\r
245     \r
246     //Class used by Test4407042\r
247     class DateParseThread extends Thread {\r
248         public void run() {\r
249             SimpleDateFormat sdf = (SimpleDateFormat) sdf_.clone();\r
250             TimeZone defaultTZ = TimeZone.getDefault();\r
251             TimeZone PST = TimeZone.getTimeZone("PST");\r
252             int defaultOffset = defaultTZ.getRawOffset();\r
253             int PSTOffset = PST.getRawOffset();\r
254             int offset = defaultOffset - PSTOffset;\r
255             long ms = UTC_LONG - offset;\r
256             try {\r
257                 int i = 0;\r
258                 while (i < 10000) {\r
259                     Date date = sdf.parse(TIME_STRING);\r
260                     long t = date.getTime();\r
261                     i++;\r
262                     if (t != ms) {\r
263                         throw new ParseException("Parse Error: " + i + " (" + sdf.format(date) \r
264                                   + ") " + t + " != " + ms, 0);\r
265                     }\r
266                 }\r
267             } catch (Exception e) {\r
268                 errln("parse error: " + e.getMessage());\r
269             }\r
270         }\r
271     }\r
272     \r
273     //Class used by Test4407042\r
274     class DateFormatThread extends Thread {\r
275         public void run() {            \r
276             SimpleDateFormat sdf = (SimpleDateFormat) sdf_.clone();\r
277             TimeZone tz = TimeZone.getTimeZone("PST");\r
278             sdf.setTimeZone(tz);\r
279             int i = 0;\r
280             while (i < 10000) {\r
281                 i++;\r
282                 String s = sdf.format(new Date(UTC_LONG));\r
283                 if (!s.equals(TIME_STRING)) {\r
284                     errln("Format Error: " + i + " " + s + " != " \r
285                                     + TIME_STRING);\r
286                 }\r
287             }\r
288         }\r
289     }\r
290     \r
291 }\r