blob: 4f73c22f0088c39e5fe0154cb36d552da40cd33c [file] [log] [blame]
/*****************************************************************************************
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996-2012 - All Rights Reserved
*
* The original version of this source code and documentation is copyrighted and
* owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These materials are
* provided under terms of a License Agreement between Taligent and Sun. This
* technology is protected by multiple US and International patents. This notice and
* attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
**/
/**
* Port From: JDK 1.4b1 : java.text.Format.IntlTestSimpleDateFormatAPI
* Source File: java/text/format/IntlTestSimpleDateFormatAPI.java
**/
package com.ibm.icu.dev.test.format;
import java.text.FieldPosition;
import java.text.Format;
import java.text.ParseException;
import java.text.ParsePosition;
import java.util.Date;
import java.util.Locale;
import com.ibm.icu.text.DateFormatSymbols;
import com.ibm.icu.text.SimpleDateFormat;
/**
* @test 1.4 98/03/06
* @summary test International Simple Date Format API
*/
public class IntlTestSimpleDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk
{
public static void main(String[] args) throws Exception {
new IntlTestSimpleDateFormatAPI().run(args);
}
// This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
public void TestAPI()
{
logln("SimpleDateFormat API test---"); logln("");
Locale.setDefault(Locale.ENGLISH);
// ======= Test constructors
logln("Testing SimpleDateFormat constructors");
SimpleDateFormat def = new SimpleDateFormat();
final String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
SimpleDateFormat pat = new SimpleDateFormat(pattern);
SimpleDateFormat pat_fr = new SimpleDateFormat(pattern, Locale.FRENCH);
DateFormatSymbols symbols = new DateFormatSymbols(Locale.FRENCH);
SimpleDateFormat cust1 = new SimpleDateFormat(pattern, symbols);
// ======= Test clone() and equality
logln("Testing clone(), assignment and equality operators");
Format clone = (Format) def.clone();
if( ! clone.equals(def) ) {
errln("ERROR: Format clone or equals failed");
}
// ======= Test various format() methods
logln("Testing various format() methods");
Date d = new Date((long)837039928046.0);
StringBuffer res1 = new StringBuffer();
StringBuffer res2 = new StringBuffer();
FieldPosition pos1 = new FieldPosition(0);
FieldPosition pos2 = new FieldPosition(0);
res1 = def.format(d, res1, pos1);
logln( "" + d.getTime() + " formatted to " + res1);
res2 = cust1.format(d, res2, pos2);
logln("" + d.getTime() + " formatted to " + res2);
// ======= Test parse()
logln("Testing parse()");
String text = new String("02/03/76, 2:50 AM, CST");
Date result1 = new Date();
Date result2 = new Date();
ParsePosition pos= new ParsePosition(0);
result1 = def.parse(text, pos);
logln(text + " parsed into " + result1);
try {
result2 = def.parse(text);
}
catch (ParseException e) {
errln("ERROR: parse() failed");
}
logln(text + " parsed into " + result2);
// ======= Test getters and setters
logln("Testing getters and setters");
final DateFormatSymbols syms = pat.getDateFormatSymbols();
def.setDateFormatSymbols(syms);
pat_fr.setDateFormatSymbols(syms);
if( ! pat.getDateFormatSymbols().equals(def.getDateFormatSymbols()) ) {
errln("ERROR: set DateFormatSymbols() failed");
}
/*
DateFormatSymbols has not the method getTwoDigitStartDate();
//Date startDate = null; //The variable is never used
try {
// startDate = pat.getTwoDigitStartDate();
}
catch (Exception e) {
errln("ERROR: getTwoDigitStartDate() failed");
}
try {
// pat_fr.setTwoDigitStartDate(startDate);
}
catch (Exception e) {
errln("ERROR: setTwoDigitStartDate() failed");
}*/
// ======= Test applyPattern()
logln("Testing applyPattern()");
String p1 = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
logln("Applying pattern " + p1);
pat.applyPattern(p1);
String s2 = pat.toPattern();
logln("Extracted pattern is " + s2);
if( ! s2.equals(p1) ) {
errln("ERROR: toPattern() result did not match pattern applied");
}
logln("Applying pattern " + p1);
pat.applyLocalizedPattern(p1);
String s3 = pat.toLocalizedPattern();
logln("Extracted pattern is " + s3);
if( ! s3.equals(p1) ) {
errln("ERROR: toLocalizedPattern() result did not match pattern applied");
}
// ======= Test for Ticket 5684 (Parsing patterns with 'Y' and 'e'
logln("Testing parse()");
String p2 = new String("YYYY'W'wwe");
logln("Applying pattern " + p2);
pat.applyPattern(p2);
Date dt = pat.parse("2007W014", new ParsePosition(0));
if (dt == null) {
errln("ERROR: Parsing failed using 'Y' and 'e'");
}
// ======= Test getStaticClassID()
// logln("Testing instanceof");
// try {
// DateFormat test = new SimpleDateFormat();
// if (! (test instanceof SimpleDateFormat)) {
// errln("ERROR: instanceof failed");
// }
// }
// catch (Exception e) {
// errln("ERROR: Couldn't create a SimpleDateFormat");
// }
}
// Jitterbug 4451, for coverage
public void TestCoverage(){
class StubDateFormat extends SimpleDateFormat{
/**
* For serialization
*/
private static final long serialVersionUID = 8460897119491427934L;
public void run(){
if (!zeroPaddingNumber(12, 4, 6).equals("0012")){
errln("SimpleDateFormat(zeroPaddingNumber(long , int , int )");
}
}
}
new StubDateFormat().run();
}
}