]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / format / IntlTestSimpleDateFormatAPI.java
1 /*****************************************************************************************\r
2  * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved\r
3  * (C) Copyright IBM Corp. 1996-2010 - All Rights Reserved\r
4  *\r
5  *   The original version of this source code and documentation is copyrighted and\r
6  * owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These materials are\r
7  * provided under terms of a License Agreement between Taligent and Sun. This\r
8  * technology is protected by multiple US and International patents. This notice and\r
9  * attribution to Taligent may not be removed.\r
10  *   Taligent is a registered trademark of Taligent, Inc.\r
11  **/\r
12 \r
13 /** \r
14  * Port From:   JDK 1.4b1 : java.text.Format.IntlTestSimpleDateFormatAPI\r
15  * Source File: java/text/format/IntlTestSimpleDateFormatAPI.java\r
16  **/\r
17  \r
18 package com.ibm.icu.dev.test.format;\r
19 \r
20 import java.text.FieldPosition;\r
21 import java.text.Format;\r
22 import java.text.ParseException;\r
23 import java.text.ParsePosition;\r
24 import java.util.Date;\r
25 import java.util.Locale;\r
26 \r
27 import com.ibm.icu.text.DateFormatSymbols;\r
28 import com.ibm.icu.text.SimpleDateFormat;\r
29 \r
30 /**\r
31 * @test 1.4 98/03/06\r
32 * @summary test International Simple Date Format API\r
33 */\r
34 public class IntlTestSimpleDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk\r
35 {\r
36     public static void main(String[] args) throws Exception {\r
37         new IntlTestSimpleDateFormatAPI().run(args);\r
38     }\r
39 \r
40     // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.\r
41     public void TestAPI()\r
42     {\r
43         logln("SimpleDateFormat API test---"); logln("");\r
44 \r
45         Locale.setDefault(Locale.ENGLISH);\r
46 \r
47         // ======= Test constructors\r
48 \r
49         logln("Testing SimpleDateFormat constructors");\r
50 \r
51         SimpleDateFormat def = new SimpleDateFormat();\r
52 \r
53         final String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");\r
54         SimpleDateFormat pat = new SimpleDateFormat(pattern);\r
55 \r
56         SimpleDateFormat pat_fr = new SimpleDateFormat(pattern, Locale.FRENCH);\r
57 \r
58         DateFormatSymbols symbols = new DateFormatSymbols(Locale.FRENCH);\r
59 \r
60         SimpleDateFormat cust1 = new SimpleDateFormat(pattern, symbols);\r
61 \r
62         // ======= Test clone() and equality\r
63 \r
64         logln("Testing clone(), assignment and equality operators");\r
65 \r
66         Format clone = (Format) def.clone();\r
67         if( ! clone.equals(def) ) {\r
68             errln("ERROR: Format clone or equals failed");\r
69         }\r
70 \r
71         // ======= Test various format() methods\r
72 \r
73         logln("Testing various format() methods");\r
74 \r
75         Date d = new Date((long)837039928046.0);\r
76 \r
77         StringBuffer res1 = new StringBuffer();\r
78         StringBuffer res2 = new StringBuffer();\r
79         FieldPosition pos1 = new FieldPosition(0);\r
80         FieldPosition pos2 = new FieldPosition(0);\r
81 \r
82         res1 = def.format(d, res1, pos1);\r
83         logln( "" + d.getTime() + " formatted to " + res1);\r
84 \r
85         res2 = cust1.format(d, res2, pos2);\r
86         logln("" + d.getTime() + " formatted to " + res2);\r
87 \r
88         // ======= Test parse()\r
89 \r
90         logln("Testing parse()");\r
91 \r
92         String text = new String("02/03/76 2:50 AM, CST");\r
93         Date result1 = new Date();\r
94         Date result2 = new Date();\r
95         ParsePosition pos= new ParsePosition(0);\r
96         result1 = def.parse(text, pos);\r
97         logln(text + " parsed into " + result1);\r
98 \r
99         try {\r
100             result2 = def.parse(text);\r
101         }\r
102         catch (ParseException e) {\r
103             errln("ERROR: parse() failed");\r
104         }\r
105         logln(text + " parsed into " + result2);\r
106 \r
107         // ======= Test getters and setters\r
108 \r
109         logln("Testing getters and setters");\r
110 \r
111         final DateFormatSymbols syms = pat.getDateFormatSymbols();\r
112         def.setDateFormatSymbols(syms);\r
113         pat_fr.setDateFormatSymbols(syms);\r
114         if( ! pat.getDateFormatSymbols().equals(def.getDateFormatSymbols()) ) {\r
115             errln("ERROR: set DateFormatSymbols() failed");\r
116         }\r
117 \r
118         /*\r
119         DateFormatSymbols has not the method getTwoDigitStartDate();\r
120         //Date startDate = null; //The variable is never used\r
121         try {\r
122 //            startDate = pat.getTwoDigitStartDate();\r
123         }\r
124         catch (Exception e) {\r
125             errln("ERROR: getTwoDigitStartDate() failed");\r
126         }\r
127 \r
128         try {\r
129 //            pat_fr.setTwoDigitStartDate(startDate);\r
130         }\r
131         catch (Exception e) {\r
132             errln("ERROR: setTwoDigitStartDate() failed");\r
133         }*/\r
134 \r
135         // ======= Test applyPattern()\r
136 \r
137         logln("Testing applyPattern()");\r
138 \r
139         String p1 = new String("yyyy.MM.dd G 'at' hh:mm:ss z");\r
140         logln("Applying pattern " + p1);\r
141         pat.applyPattern(p1);\r
142 \r
143         String s2 = pat.toPattern();\r
144         logln("Extracted pattern is " + s2);\r
145         if( ! s2.equals(p1) ) {\r
146             errln("ERROR: toPattern() result did not match pattern applied");\r
147         }\r
148 \r
149         logln("Applying pattern " + p1);\r
150         pat.applyLocalizedPattern(p1);\r
151         String s3 = pat.toLocalizedPattern();\r
152         logln("Extracted pattern is " + s3);\r
153         if( ! s3.equals(p1) ) {\r
154             errln("ERROR: toLocalizedPattern() result did not match pattern applied");\r
155         }\r
156         \r
157         // ======= Test for Ticket 5684 (Parsing patterns with 'Y' and 'e'\r
158         logln("Testing parse()");\r
159 \r
160         String p2 = new String("YYYY'W'wwe");\r
161         logln("Applying pattern " + p2);\r
162         pat.applyPattern(p2);\r
163         Date dt = pat.parse("2007W014", new ParsePosition(0));\r
164         if (dt == null) {\r
165             errln("ERROR: Parsing failed using 'Y' and 'e'");\r
166         }\r
167 \r
168 \r
169         // ======= Test getStaticClassID()\r
170 \r
171 //        logln("Testing instanceof");\r
172 \r
173 //        try {\r
174 //            DateFormat test = new SimpleDateFormat();\r
175 \r
176 //            if (! (test instanceof SimpleDateFormat)) {\r
177 //                errln("ERROR: instanceof failed");\r
178 //            }\r
179 //        }\r
180 //        catch (Exception e) {\r
181 //            errln("ERROR: Couldn't create a SimpleDateFormat");\r
182 //        }\r
183     }\r
184     \r
185     // Jitterbug 4451, for coverage\r
186     public void TestCoverage(){\r
187         class StubDateFormat extends SimpleDateFormat{\r
188             /**\r
189              * For serialization\r
190              */\r
191             private static final long serialVersionUID = 8460897119491427934L;\r
192 \r
193             public void run(){\r
194                 if (!zeroPaddingNumber(12, 4, 6).equals("0012")){\r
195                     errln("SimpleDateFormat(zeroPaddingNumber(long , int , int )");\r
196                 }\r
197             }\r
198         }\r
199         new StubDateFormat().run();\r
200     }\r
201 }\r