--- /dev/null 2016-05-17 12:01:17.473251102 +0900 +++ new/test/java/text/Format/DateFormat/IntlTestDateFormatAPI.java 2016-05-23 13:57:45.515426809 +0900 @@ -0,0 +1,218 @@ +/* + * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @summary test International Date Format API + * @bug 8008577 + * @library /java/text/testlib + * @run main/othervm -Djava.locale.providers=COMPAT,SPI IntlTestDateFormatAPI + */ +/* +(C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved +(C) Copyright IBM Corp. 1996, 1997 - 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. +*/ + +import java.text.*; +import java.util.*; + +public class IntlTestDateFormatAPI extends IntlTest +{ + public static void main(String[] args) throws Exception { + Locale reservedLocale = Locale.getDefault(); + try { + new IntlTestDateFormatAPI().run(args); + } finally { + // restore the reserved locale + Locale.setDefault(reservedLocale); + } + } + + // Test that the equals method works correctly. + public void TestEquals() + { + // Create two objects at different system times + DateFormat a = DateFormat.getInstance(); + Date start = Calendar.getInstance().getTime(); + while (start.equals(Calendar.getInstance().getTime())) ; // Wait for time to change + DateFormat b = DateFormat.getInstance(); + + if (!(a.equals(b))) + errln("FAIL: DateFormat objects created at different times are unequal."); + + if (b instanceof SimpleDateFormat) + { + double ONE_YEAR = 365*24*60*60*1000.0; + try { +// ((SimpleDateFormat)b).setTwoDigitStartDate(start.getTime() + 50*ONE_YEAR); +// if (a.equals(b)) +// errln("FAIL: DateFormat objects with different two digit start dates are equal."); + } + catch (Exception e) { + errln("FAIL: setTwoDigitStartDate failed."); + } + } + } + + // This test checks various generic API methods in DateFormat to achieve 100% API coverage. + public void TestAPI() + { + logln("DateFormat API test---"); logln(""); + Locale.setDefault(Locale.ENGLISH); + + + // ======= Test constructors + + logln("Testing DateFormat constructors"); + + DateFormat def = DateFormat.getInstance(); + DateFormat fr = DateFormat.getTimeInstance(DateFormat.FULL, Locale.FRENCH); + DateFormat it = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.ITALIAN); + DateFormat de = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.GERMAN); + + // ======= Test equality + + logln("Testing equality operator"); + + if( fr.equals(it) ) { + errln("ERROR: 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(); + String res3 = new String(); + FieldPosition pos1 = new FieldPosition(0); + FieldPosition pos2 = new FieldPosition(0); + + res1 = fr.format(d, res1, pos1); + logln("" + d.getTime() + " formatted to " + res1); + + res2 = it.format(d, res2, pos2); + logln("" + d.getTime() + " formatted to " + res2); + + res3 = de.format(d); + logln("" + d.getTime() + " formatted to " + res3); + + // ======= Test parse() + + logln("Testing parse()"); + + String text = new String("02/03/76 2:50 AM, CST"); + Object result1 = new Date(); + Date result2 = new Date(); + Date result3 = new Date(); + ParsePosition pos = new ParsePosition(0); + ParsePosition pos01 = new ParsePosition(0); + + result1 = def.parseObject(text, pos); + if (result1 == null) { + errln("ERROR: parseObject() failed for " + text); + } + logln(text + " parsed into " + ((Date)result1).getTime()); + + try { + result2 = def.parse(text); + } + catch (ParseException e) { + errln("ERROR: parse() failed"); + } + logln(text + " parsed into " + result2.getTime()); + + result3 = def.parse(text, pos01); + if (result3 == null) { + errln("ERROR: parse() failed for " + text); + } + logln(text + " parsed into " + result3.getTime()); + + + // ======= Test getters and setters + + logln("Testing getters and setters"); + + final Locale[] locales = DateFormat.getAvailableLocales(); + long count = locales.length; + logln("Got " + count + " locales" ); + for(int i = 0; i < count; i++) { + String name; + name = locales[i].getDisplayName(); + logln(name); + } + + fr.setLenient(it.isLenient()); + if(fr.isLenient() != it.isLenient()) { + errln("ERROR: setLenient() failed"); + } + + final Calendar cal = def.getCalendar(); + Calendar newCal = (Calendar) cal.clone(); + de.setCalendar(newCal); + it.setCalendar(newCal); + if( ! de.getCalendar().equals(it.getCalendar())) { + errln("ERROR: set Calendar() failed"); + } + + final NumberFormat nf = def.getNumberFormat(); + NumberFormat newNf = (NumberFormat) nf.clone(); + de.setNumberFormat(newNf); + it.setNumberFormat(newNf); + if( ! de.getNumberFormat().equals(it.getNumberFormat())) { + errln("ERROR: set NumberFormat() failed"); + } + + final TimeZone tz = def.getTimeZone(); + TimeZone newTz = (TimeZone) tz.clone(); + de.setTimeZone(newTz); + it.setTimeZone(newTz); + if( ! de.getTimeZone().equals(it.getTimeZone())) { + errln("ERROR: set TimeZone() failed"); + } + + // ======= 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 DateFormat"); +// } + } +}