| /* |
| * 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"); |
| // } |
| } |
| } |