diff options
Diffstat (limited to 'harmony-tests/src/test/java/org/apache/harmony/tests/java/text/DateFormatTest.java')
-rw-r--r-- | harmony-tests/src/test/java/org/apache/harmony/tests/java/text/DateFormatTest.java | 475 |
1 files changed, 475 insertions, 0 deletions
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/DateFormatTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/DateFormatTest.java new file mode 100644 index 0000000..072d133 --- /dev/null +++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/text/DateFormatTest.java @@ -0,0 +1,475 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.harmony.tests.java.text; + +import java.text.DateFormat; +import java.text.DateFormatSymbols; +import java.text.NumberFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +public class DateFormatTest extends junit.framework.TestCase { + + /** + * @tests java.text.DateFormat#clone() + */ + public void test_clone() { + DateFormat format = DateFormat.getInstance(); + DateFormat clone = (DateFormat) format.clone(); + assertTrue("Clone not equal", format.equals(clone)); + clone.getNumberFormat().setMinimumFractionDigits(123); + assertTrue("Clone shares NumberFormat", !format.equals(clone)); + } + + /** + * @tests java.text.DateFormat#getAvailableLocales() + */ + public void test_getAvailableLocales() { + Locale[] locales = DateFormat.getAvailableLocales(); + assertTrue("No locales", locales.length > 0); + boolean english = false, german = false; + for (int i = locales.length; --i >= 0;) { + if (locales[i].equals(Locale.ENGLISH)) + english = true; + if (locales[i].equals(Locale.GERMAN)) + german = true; + DateFormat f1 = DateFormat.getDateTimeInstance(DateFormat.SHORT, + DateFormat.SHORT, locales[i]); + assertTrue("Doesn't work", + f1.format(new Date()).getClass() == String.class); + } + assertTrue("Missing locales", english && german); + } + + /** + * @tests java.text.DateFormat#getCalendar() + */ + public void test_getCalendar() { + DateFormat format = DateFormat.getInstance(); + Calendar cal1 = format.getCalendar(); + Calendar cal2 = format.getCalendar(); + assertTrue("Calendars not identical", cal1 == cal2); + } + + /** + * @tests java.text.DateFormat#getDateInstance() + */ + public void test_getDateInstance() { + SimpleDateFormat f2 = (SimpleDateFormat) DateFormat.getDateInstance(); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default", f2.equals(DateFormat.getDateInstance( + DateFormat.DEFAULT, Locale.getDefault()))); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + } + + /** + * @tests java.text.DateFormat#getDateInstance(int) + */ + public void test_getDateInstanceI() { + assertTrue("Default not medium", + DateFormat.DEFAULT == DateFormat.MEDIUM); + + SimpleDateFormat f2 = (SimpleDateFormat) DateFormat + .getDateInstance(DateFormat.SHORT); + assertTrue("Wrong class1", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default1", f2.equals(DateFormat.getDateInstance( + DateFormat.SHORT, Locale.getDefault()))); + assertTrue("Wrong symbols1", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work1", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.MEDIUM); + assertTrue("Wrong class2", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default2", f2.equals(DateFormat.getDateInstance( + DateFormat.MEDIUM, Locale.getDefault()))); + assertTrue("Wrong symbols2", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work2", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.LONG); + assertTrue("Wrong class3", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default3", f2.equals(DateFormat.getDateInstance( + DateFormat.LONG, Locale.getDefault()))); + assertTrue("Wrong symbols3", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work3", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.FULL); + assertTrue("Wrong class4", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default4", f2.equals(DateFormat.getDateInstance( + DateFormat.FULL, Locale.getDefault()))); + assertTrue("Wrong symbols4", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work4", + f2.format(new Date()).getClass() == String.class); + + // regression test for HARMONY-940 + try { + DateFormat.getDateInstance(77); + fail("Should throw IAE"); + } catch (IllegalArgumentException iae) { + //expected + } + } + + /** + * @tests java.text.DateFormat#getDateInstance(int, java.util.Locale) + */ + public void test_getDateInstanceILjava_util_Locale() { + SimpleDateFormat f2 = (SimpleDateFormat) DateFormat.getDateInstance( + DateFormat.SHORT, Locale.GERMAN); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols(Locale.GERMAN))); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.MEDIUM, + Locale.GERMAN); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols(Locale.GERMAN))); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.LONG, + Locale.GERMAN); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols(Locale.GERMAN))); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.FULL, + Locale.GERMAN); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols(Locale.GERMAN))); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + + // regression test for HARMONY-940 + try { + DateFormat.getDateInstance(77, Locale.GERMAN); + fail("Should throw IAE"); + } catch (IllegalArgumentException iae) { + //expected + } + } + + /** + * @tests java.text.DateFormat#getDateTimeInstance() + */ + public void test_getDateTimeInstance() { + SimpleDateFormat f2 = (SimpleDateFormat) DateFormat + .getDateTimeInstance(); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default", f2.equals(DateFormat.getDateTimeInstance( + DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.getDefault()))); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + } + + private void testDateTime(int dStyle, int tStyle) { + SimpleDateFormat f2 = (SimpleDateFormat) DateFormat + .getDateTimeInstance(dStyle, tStyle); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + SimpleDateFormat date = (SimpleDateFormat) DateFormat.getDateInstance( + dStyle, Locale.getDefault()); + SimpleDateFormat time = (SimpleDateFormat) DateFormat.getTimeInstance( + tStyle, Locale.getDefault()); + assertTrue("Wrong default", f2.toPattern().equals( + date.toPattern() + " " + time.toPattern())); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + } + + /** + * @tests java.text.DateFormat#getDateTimeInstance(int, int) + */ + public void test_getDateTimeInstanceII() { + testDateTime(DateFormat.SHORT, DateFormat.SHORT); + testDateTime(DateFormat.SHORT, DateFormat.MEDIUM); + testDateTime(DateFormat.SHORT, DateFormat.LONG); + testDateTime(DateFormat.SHORT, DateFormat.FULL); + + testDateTime(DateFormat.MEDIUM, DateFormat.SHORT); + testDateTime(DateFormat.MEDIUM, DateFormat.MEDIUM); + testDateTime(DateFormat.MEDIUM, DateFormat.LONG); + testDateTime(DateFormat.MEDIUM, DateFormat.FULL); + + testDateTime(DateFormat.LONG, DateFormat.SHORT); + testDateTime(DateFormat.LONG, DateFormat.MEDIUM); + testDateTime(DateFormat.LONG, DateFormat.LONG); + testDateTime(DateFormat.LONG, DateFormat.FULL); + + testDateTime(DateFormat.FULL, DateFormat.SHORT); + testDateTime(DateFormat.FULL, DateFormat.MEDIUM); + testDateTime(DateFormat.FULL, DateFormat.LONG); + testDateTime(DateFormat.FULL, DateFormat.FULL); + + // regression test for HARMONY-940 + try { + DateFormat.getDateTimeInstance(77, 66); + fail("Should throw IAE"); + } catch (IllegalArgumentException iae) { + //expected + } + } + + private void testDateTimeLocale(int dStyle, int tStyle) { + SimpleDateFormat f2 = (SimpleDateFormat) DateFormat + .getDateTimeInstance(dStyle, tStyle, Locale.GERMAN); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + SimpleDateFormat date = (SimpleDateFormat) DateFormat.getDateInstance( + dStyle, Locale.GERMAN); + SimpleDateFormat time = (SimpleDateFormat) DateFormat.getTimeInstance( + tStyle, Locale.GERMAN); + assertTrue("Wrong default", f2.toPattern().equals( + date.toPattern() + " " + time.toPattern())); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols(Locale.GERMAN))); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + } + + /** + * @tests java.text.DateFormat#getDateTimeInstance(int, int, + * java.util.Locale) + */ + public void test_getDateTimeInstanceIILjava_util_Locale() { + testDateTimeLocale(DateFormat.SHORT, DateFormat.SHORT); + testDateTimeLocale(DateFormat.SHORT, DateFormat.MEDIUM); + testDateTimeLocale(DateFormat.SHORT, DateFormat.LONG); + testDateTimeLocale(DateFormat.SHORT, DateFormat.FULL); + + testDateTimeLocale(DateFormat.MEDIUM, DateFormat.SHORT); + testDateTimeLocale(DateFormat.MEDIUM, DateFormat.MEDIUM); + testDateTimeLocale(DateFormat.MEDIUM, DateFormat.LONG); + testDateTimeLocale(DateFormat.MEDIUM, DateFormat.FULL); + + testDateTimeLocale(DateFormat.LONG, DateFormat.SHORT); + testDateTimeLocale(DateFormat.LONG, DateFormat.MEDIUM); + testDateTimeLocale(DateFormat.LONG, DateFormat.LONG); + testDateTimeLocale(DateFormat.LONG, DateFormat.FULL); + + testDateTimeLocale(DateFormat.FULL, DateFormat.SHORT); + testDateTimeLocale(DateFormat.FULL, DateFormat.MEDIUM); + testDateTimeLocale(DateFormat.FULL, DateFormat.LONG); + testDateTimeLocale(DateFormat.FULL, DateFormat.FULL); + + // regression test for HARMONY-940 + try { + DateFormat.getDateTimeInstance(77, 66, Locale.GERMAN); + fail("Should throw IAE"); + } catch (IllegalArgumentException iae) { + //expected + } + } + + /** + * @tests java.text.DateFormat#getInstance() + */ + public void test_getInstance() { + SimpleDateFormat f2 = (SimpleDateFormat) DateFormat.getInstance(); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default", f2.equals(DateFormat.getDateTimeInstance( + DateFormat.SHORT, DateFormat.SHORT, Locale.getDefault()))); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + } + + /** + * @tests java.text.DateFormat#getNumberFormat() + */ + public void test_getNumberFormat() { + DateFormat format = DateFormat.getInstance(); + NumberFormat nf1 = format.getNumberFormat(); + NumberFormat nf2 = format.getNumberFormat(); + assertTrue("NumberFormats not identical", nf1 == nf2); + } + + /** + * @tests java.text.DateFormat#getTimeInstance() + */ + public void test_getTimeInstance() { + SimpleDateFormat f2 = (SimpleDateFormat) DateFormat.getTimeInstance(); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default", f2.equals(DateFormat.getTimeInstance( + DateFormat.DEFAULT, Locale.getDefault()))); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + } + + /** + * @tests java.text.DateFormat#getTimeInstance(int) + */ + public void test_getTimeInstanceI() { + SimpleDateFormat f2 = (SimpleDateFormat) DateFormat + .getTimeInstance(DateFormat.SHORT); + assertTrue("Wrong class1", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default1", f2.equals(DateFormat.getTimeInstance( + DateFormat.SHORT, Locale.getDefault()))); + assertTrue("Wrong symbols1", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work1", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.MEDIUM); + assertTrue("Wrong class2", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default2", f2.equals(DateFormat.getTimeInstance( + DateFormat.MEDIUM, Locale.getDefault()))); + assertTrue("Wrong symbols2", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work2", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.LONG); + assertTrue("Wrong class3", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default3", f2.equals(DateFormat.getTimeInstance( + DateFormat.LONG, Locale.getDefault()))); + assertTrue("Wrong symbols3", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work3", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.FULL); + assertTrue("Wrong class4", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong default4", f2.equals(DateFormat.getTimeInstance( + DateFormat.FULL, Locale.getDefault()))); + assertTrue("Wrong symbols4", f2.getDateFormatSymbols().equals( + new DateFormatSymbols())); + assertTrue("Doesn't work4", + f2.format(new Date()).getClass() == String.class); + + // regression test for HARMONY-940 + try { + DateFormat.getTimeInstance(77); + fail("Should throw IAE"); + } catch (IllegalArgumentException iae) { + //expected + } + } + + /** + * @tests java.text.DateFormat#getTimeInstance(int, java.util.Locale) + */ + public void test_getTimeInstanceILjava_util_Locale() { + SimpleDateFormat f2 = (SimpleDateFormat) DateFormat.getTimeInstance( + DateFormat.SHORT, Locale.GERMAN); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols(Locale.GERMAN))); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.MEDIUM, + Locale.GERMAN); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols(Locale.GERMAN))); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.LONG, + Locale.GERMAN); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols(Locale.GERMAN))); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + + f2 = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.FULL, + Locale.GERMAN); + assertTrue("Wrong class", f2.getClass() == SimpleDateFormat.class); + assertTrue("Wrong symbols", f2.getDateFormatSymbols().equals( + new DateFormatSymbols(Locale.GERMAN))); + assertTrue("Doesn't work", + f2.format(new Date()).getClass() == String.class); + + // regression test for HARMONY-940 + try { + DateFormat.getTimeInstance(77, Locale.GERMAN); + fail("Should throw IAE"); + } catch (IllegalArgumentException iae) { + //expected + } + } + + /** + * @tests java.text.DateFormat#setCalendar(java.util.Calendar) + */ + public void test_setCalendarLjava_util_Calendar() { + DateFormat format = DateFormat.getInstance(); + Calendar cal = Calendar.getInstance(); + format.setCalendar(cal); + assertTrue("Not identical Calendar", cal == format.getCalendar()); + } + + /** + * @tests java.text.DateFormat#setNumberFormat(java.text.NumberFormat) + */ + public void test_setNumberFormatLjava_text_NumberFormat() { + DateFormat format = DateFormat.getInstance(); + NumberFormat f1 = NumberFormat.getInstance(); + format.setNumberFormat(f1); + assertTrue("Not identical NumberFormat", f1 == format.getNumberFormat()); + } + + /** + * @tests java.text.DateFormat#parse(String) + */ + public void test_parse_LString() { + DateFormat format = DateFormat.getInstance(); + try { + format.parse("not a Date"); + fail("should throw ParseException first"); + } catch (ParseException e) { + assertNotNull(e.getMessage()); + } + } + + /** + * @tests java.text.DateFormat#setLenient(boolean) + */ + public void test_setLenient() { + Date d = null; + DateFormat output = new SimpleDateFormat("MM/dd/yy"); + output.setLenient(false); + try { + d = output.parse("01/01/-1"); + fail("Should throw ParseException here."); + } catch (ParseException e) {} + } +} |