1 /*****************************************************************************************
\r
2 * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
\r
3 * (C) Copyright IBM Corp. 1996-2008 - All Rights Reserved
\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
14 * Port From: JDK 1.4b1 : java.text.Format.IntlTestSimpleDateFormatAPI
\r
15 * Source File: java/text/format/IntlTestSimpleDateFormatAPI.java
\r
18 package com.ibm.icu.dev.test.format;
\r
20 import com.ibm.icu.text.*;
\r
21 import java.util.Locale;
\r
22 import java.util.Date;
\r
23 import java.text.ParsePosition;
\r
24 import java.text.Format;
\r
25 import java.text.FieldPosition;
\r
26 import java.text.ParseException;
\r
29 * @test 1.4 98/03/06
\r
30 * @summary test International Simple Date Format API
\r
32 public class IntlTestSimpleDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk
\r
34 public static void main(String[] args) throws Exception {
\r
35 new IntlTestSimpleDateFormatAPI().run(args);
\r
38 // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
\r
39 public void TestAPI()
\r
41 logln("SimpleDateFormat API test---"); logln("");
\r
43 Locale.setDefault(Locale.ENGLISH);
\r
45 // ======= Test constructors
\r
47 logln("Testing SimpleDateFormat constructors");
\r
49 SimpleDateFormat def = new SimpleDateFormat();
\r
51 final String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
\r
52 SimpleDateFormat pat = new SimpleDateFormat(pattern);
\r
54 SimpleDateFormat pat_fr = new SimpleDateFormat(pattern, Locale.FRENCH);
\r
56 DateFormatSymbols symbols = new DateFormatSymbols(Locale.FRENCH);
\r
58 SimpleDateFormat cust1 = new SimpleDateFormat(pattern, symbols);
\r
60 // ======= Test clone() and equality
\r
62 logln("Testing clone(), assignment and equality operators");
\r
64 Format clone = (Format) def.clone();
\r
65 if( ! clone.equals(def) ) {
\r
66 errln("ERROR: Format clone or equals failed");
\r
69 // ======= Test various format() methods
\r
71 logln("Testing various format() methods");
\r
73 Date d = new Date((long)837039928046.0);
\r
75 StringBuffer res1 = new StringBuffer();
\r
76 StringBuffer res2 = new StringBuffer();
\r
77 FieldPosition pos1 = new FieldPosition(0);
\r
78 FieldPosition pos2 = new FieldPosition(0);
\r
80 res1 = def.format(d, res1, pos1);
\r
81 logln( "" + d.getTime() + " formatted to " + res1);
\r
83 res2 = cust1.format(d, res2, pos2);
\r
84 logln("" + d.getTime() + " formatted to " + res2);
\r
86 // ======= Test parse()
\r
88 logln("Testing parse()");
\r
90 String text = new String("02/03/76 2:50 AM, CST");
\r
91 Date result1 = new Date();
\r
92 Date result2 = new Date();
\r
93 ParsePosition pos= new ParsePosition(0);
\r
94 result1 = def.parse(text, pos);
\r
95 logln(text + " parsed into " + result1);
\r
98 result2 = def.parse(text);
\r
100 catch (ParseException e) {
\r
101 errln("ERROR: parse() failed");
\r
103 logln(text + " parsed into " + result2);
\r
105 // ======= Test getters and setters
\r
107 logln("Testing getters and setters");
\r
109 final DateFormatSymbols syms = pat.getDateFormatSymbols();
\r
110 def.setDateFormatSymbols(syms);
\r
111 pat_fr.setDateFormatSymbols(syms);
\r
112 if( ! pat.getDateFormatSymbols().equals(def.getDateFormatSymbols()) ) {
\r
113 errln("ERROR: set DateFormatSymbols() failed");
\r
117 DateFormatSymbols has not the method getTwoDigitStartDate();
\r
118 //Date startDate = null; //The variable is never used
\r
120 // startDate = pat.getTwoDigitStartDate();
\r
122 catch (Exception e) {
\r
123 errln("ERROR: getTwoDigitStartDate() failed");
\r
127 // pat_fr.setTwoDigitStartDate(startDate);
\r
129 catch (Exception e) {
\r
130 errln("ERROR: setTwoDigitStartDate() failed");
\r
133 // ======= Test applyPattern()
\r
135 logln("Testing applyPattern()");
\r
137 String p1 = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
\r
138 logln("Applying pattern " + p1);
\r
139 pat.applyPattern(p1);
\r
141 String s2 = pat.toPattern();
\r
142 logln("Extracted pattern is " + s2);
\r
143 if( ! s2.equals(p1) ) {
\r
144 errln("ERROR: toPattern() result did not match pattern applied");
\r
147 logln("Applying pattern " + p1);
\r
148 pat.applyLocalizedPattern(p1);
\r
149 String s3 = pat.toLocalizedPattern();
\r
150 logln("Extracted pattern is " + s3);
\r
151 if( ! s3.equals(p1) ) {
\r
152 errln("ERROR: toLocalizedPattern() result did not match pattern applied");
\r
155 // ======= Test for Ticket 5684 (Parsing patterns with 'Y' and 'e'
\r
156 logln("Testing parse()");
\r
158 String p2 = new String("YYYY'W'wwe");
\r
159 logln("Applying pattern " + p2);
\r
160 pat.applyPattern(p2);
\r
161 Date dt = pat.parse("2007W014", new ParsePosition(0));
\r
163 errln("ERROR: Parsing failed using 'Y' and 'e'");
\r
167 // ======= Test getStaticClassID()
\r
169 // logln("Testing instanceof");
\r
172 // DateFormat test = new SimpleDateFormat();
\r
174 // if (! (test instanceof SimpleDateFormat)) {
\r
175 // errln("ERROR: instanceof failed");
\r
178 // catch (Exception e) {
\r
179 // errln("ERROR: Couldn't create a SimpleDateFormat");
\r
183 // Jitterbug 4451, for coverage
\r
184 public void TestCoverage(){
\r
185 class StubDateFormat extends SimpleDateFormat{
\r
187 * For serialization
\r
189 private static final long serialVersionUID = 8460897119491427934L;
\r
192 if (!zeroPaddingNumber(12, 4, 6).equals("0012")){
\r
193 errln("SimpleDateFormat(zeroPaddingNumber(long , int , int )");
\r
197 new StubDateFormat().run();
\r