blob: e70aaf2105ab9ab68d5db77d16767ab0bb006a02 [file] [log] [blame]
/*
* 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.text.tests.java.text;
import dalvik.annotation.KnownFailure;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestTargetClass;
import java.text.DateFormat;
import java.text.DateFormatSymbols;
import java.text.FieldPosition;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
@TestTargetClass(DateFormat.class)
public class DateFormatTest extends junit.framework.TestCase {
private class MockDateFormat extends DateFormat {
private static final long serialVersionUID = 1L;
public MockDateFormat() {
super();
}
@Override
public Date parse(String source, ParsePosition pos) {
// it is a fake
return null;
}
@Override
public StringBuffer format(Date date, StringBuffer toAppendTo,
FieldPosition fieldPosition) {
// it is a fake
return null;
}
}
/**
* @tests java.text.DateFormat#DateFormat() Test of method
* java.text.DateFormat#DateFormat().
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "DateFormat",
args = {}
)
public void test_Constructor() {
try {
new MockDateFormat();
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
}
/**
* @tests java.text.DateFormat#equals(java.lang.Object obj) Test of
* java.text.DateFormat#equals(java.lang.Object obj).
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "equals",
args = {java.lang.Object.class}
)
public void test_equalsLjava_lang_Object() {
try {
DateFormat format = DateFormat.getInstance();
DateFormat clone = (DateFormat) format.clone();
assertTrue("Clone and parent are not equaled", format.equals(clone));
assertTrue("Clone is equal to other object", !clone
.equals(DateFormat.getTimeInstance()));
format.setCalendar(Calendar.getInstance());
assertTrue("Clone and parent are not equaled", format.equals(clone));
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
}
/**
* @tests java.text.DateFormat#format(java.util.Date) Test of method
* java.text.DateFormat#format(java.util.Date).
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "format",
args = {java.util.Date.class}
)
public void test_formatLjava_util_Date() {
try {
DateFormat format = DateFormat.getDateTimeInstance(
DateFormat.SHORT, DateFormat.SHORT, Locale.US);
Date current = new Date();
String dtf = format.format(current);
SimpleDateFormat sdf = new SimpleDateFormat("M/d/yy h:mm a");
assertTrue("Incorrect date format", sdf.format(current).equals(dtf));
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
}
/**
* @tests java.text.DateFormat#format(Object, StringBuffer, FieldPosition)
* Test of method java.text.DateFormat#format(Object, StringBuffer,
* FieldPosition)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "format",
args = {java.lang.Object.class, java.lang.StringBuffer.class, java.text.FieldPosition.class}
)
public void test_formatLjava_lang_ObjectLjava_lang_StringBufferLjava_text_FieldPosition() {
try {
DateFormat format = DateFormat.getDateTimeInstance(
DateFormat.SHORT, DateFormat.SHORT, Locale.US);
Date current = new Date();
StringBuffer toAppend = new StringBuffer();
FieldPosition fp = new FieldPosition(DateFormat.YEAR_FIELD);
StringBuffer sb = format.format(current, toAppend, fp);
SimpleDateFormat sdf = new SimpleDateFormat("M/d/yy h:mm a");
assertTrue("Incorrect date format", sdf.format(current).equals(
sb.toString()));
assertTrue("Incorrect beginIndex of filed position", fp
.getBeginIndex() == sb.lastIndexOf("/") + 1);
assertTrue("Incorrect endIndex of filed position",
fp.getEndIndex() == sb.lastIndexOf("/") + 3);
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
}
/**
* @tests java.text.DateFormat#clone()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "clone",
args = {}
)
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()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getAvailableLocales",
args = {}
)
@KnownFailure("German locales were removed last minute in cupcake")
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()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getCalendar",
args = {}
)
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()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getDateInstance",
args = {}
)
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)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getDateInstance",
args = {int.class}
)
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)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getDateInstance",
args = {int.class, java.util.Locale.class}
)
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()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getDateTimeInstance",
args = {}
)
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)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getDateTimeInstance",
args = {int.class, int.class}
)
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)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getDateTimeInstance",
args = {int.class, int.class, java.util.Locale.class}
)
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()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getInstance",
args = {}
)
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()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getNumberFormat",
args = {}
)
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()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getTimeInstance",
args = {}
)
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)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getTimeInstance",
args = {int.class}
)
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)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getTimeInstance",
args = {int.class, java.util.Locale.class}
)
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);
try {
DateFormat.getTimeInstance(77, Locale.GERMAN);
fail("Should throw IAE");
} catch (IllegalArgumentException iae) {
// expected
}
}
/**
* @tests java.text.DateFormat#getTimeZone() Test of method
* java.text.DateFormat#getTimeZone().
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getTimeZone",
args = {}
)
public void test_getTimeZone() {
try {
DateFormat format = DateFormat.getInstance();
TimeZone tz = format.getTimeZone();
//if(1 == 1)
// throw new Exception(tz.getClass().getName());
// We know we are not sun.util so:
// Redundant checking
//assertFalse("Incorrect zone info", tz.getClass().getName().equals(
// "sun.util.calendar.ZoneInfo"));
assertTrue("Incorrect time zone", tz.equals(format.getCalendar()
.getTimeZone()));
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
}
/**
* @tests java.text.DateFormat#hashCode() Test of method
* java.text.DateFormat#hashCode().
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "hashCode",
args = {}
)
public void test_hashCode() {
try {
DateFormat df1 = DateFormat.getInstance();
DateFormat df2 = (DateFormat) df1.clone();
assertTrue("Hash codes of clones are not equal",
df1.hashCode() == df2.hashCode());
assertTrue("Hash codes of different objects are the same", df1
.hashCode() != DateFormat.getDateInstance().hashCode());
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
}
/**
* @tests java.text.DateFormat#isLenient() Test of method
* java.text.DateFormat#isLenient().
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "isLenient",
args = {}
)
public void test_isLenient() {
DateFormat df = DateFormat.getInstance();
Calendar c = df.getCalendar();
if (df.isLenient()) {
try {
c.set(Calendar.DAY_OF_MONTH, 32);
c.get(Calendar.DAY_OF_MONTH);
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
c.setLenient(false);
try {
c.set(Calendar.DAY_OF_MONTH, 32);
c.get(Calendar.DAY_OF_MONTH);
fail("Expected IllegalArgumentException was not thrown");
} catch (IllegalArgumentException e) {
// expected
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
} else {
try {
c.set(Calendar.DAY_OF_MONTH, 32);
c.get(Calendar.DAY_OF_MONTH);
fail("Expected IllegalArgumentException was not thrown");
} catch (IllegalArgumentException e) {
// expected
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
c.setLenient(true);
try {
c.set(Calendar.DAY_OF_MONTH, 32);
c.get(Calendar.DAY_OF_MONTH);
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
}
}
/**
* @tests java.text.DateFormat#setCalendar(java.util.Calendar)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setCalendar",
args = {java.util.Calendar.class}
)
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)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setNumberFormat",
args = {java.text.NumberFormat.class}
)
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)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "parse",
args = {java.lang.String.class}
)
public void test_parseLString() {
DateFormat format = DateFormat.getInstance();
try {
format.parse("not a Date");
fail("should throw ParseException first");
} catch (ParseException pe) {
assertNotNull(pe.getMessage());
}
Date current = new Date();
try {
Date date = format.parse(format.format(current).toString());
assertEquals(current.getDate(), date.getDate());
assertEquals(current.getDay(), date.getDay());
assertEquals(current.getMonth(), date.getMonth());
assertEquals(current.getYear(), date.getYear());
assertEquals(current.getHours(), date.getHours());
assertEquals(current.getMinutes(), date.getMinutes());
assertEquals(0, date.getSeconds());
} catch(ParseException pe) {
fail("ParseException was thrown for current Date.");
}
try {
format.parse("27/08/1998");
fail("ParseException was not thrown.");
} catch(ParseException pe) {
//expected
}
try {
format.parse("30/30/908 4:50, PDT");
fail("ParseException was not thrown.");
} catch(ParseException pe) {
//expected
}
try {
format.parse("837039928046");
fail("ParseException was not thrown.");
} catch(ParseException pe) {
//expected
}
format = DateFormat.getDateInstance();
try {
Date date = format.parse(format.format(current).toString());
assertEquals(current.getDate(), date.getDate());
assertEquals(current.getDay(), date.getDay());
assertEquals(current.getMonth(), date.getMonth());
assertEquals(current.getYear(), date.getYear());
assertEquals(0, date.getHours());
assertEquals(0, date.getMinutes());
assertEquals(0, date.getSeconds());
} catch(ParseException pe) {
fail("ParseException was thrown for current Date.");
}
try {
format.parse("Jan 16 1970");
fail("ParseException was not thrown.");
} catch(ParseException pe) {
//expected
}
try {
format.parse("27/08/1998");
fail("ParseException was not thrown.");
} catch(ParseException pe) {
//expected
}
format = DateFormat.getDateInstance(DateFormat.LONG);
try {
Date date = format.parse(format.format(current).toString());
assertEquals(current.getDate(), date.getDate());
assertEquals(current.getDay(), date.getDay());
assertEquals(current.getMonth(), date.getMonth());
assertEquals(current.getYear(), date.getYear());
assertEquals(0, date.getHours());
assertEquals(0, date.getMinutes());
assertEquals(0, date.getSeconds());
} catch(ParseException pe) {
fail("ParseException was thrown for current Date.");
}
format = DateFormat.getDateInstance(DateFormat.MEDIUM);
try {
Date date = format.parse(format.format(current).toString());
assertEquals(current.getDate(), date.getDate());
assertEquals(current.getDay(), date.getDay());
assertEquals(current.getMonth(), date.getMonth());
assertEquals(current.getYear(), date.getYear());
assertEquals(0, date.getHours());
assertEquals(0, date.getMinutes());
assertEquals(0, date.getSeconds());
} catch(ParseException pe) {
fail("ParseException was thrown for current Date.");
}
format = DateFormat.getTimeInstance();
try {
Date date = format.parse(format.format(current).toString());
assertEquals(1, date.getDate());
assertEquals(0, date.getMonth());
assertEquals(70, date.getYear());
assertEquals(current.getHours(), date.getHours());
assertEquals(current.getMinutes(), date.getMinutes());
} catch(ParseException pe) {
fail("ParseException was thrown for current Date.");
}
try {
format.parse("8:58:44");
fail("ParseException was not thrown.");
} catch(ParseException pe) {
//expected
}
format = DateFormat.getDateTimeInstance();
try {
Date date = format.parse(format.format(current).toString());
assertEquals(current.getDate(), date.getDate());
assertEquals(current.getDay(), date.getDay());
assertEquals(current.getMonth(), date.getMonth());
assertEquals(current.getYear(), date.getYear());
assertEquals(current.getHours(), date.getHours());
assertEquals(current.getMinutes(), date.getMinutes());
} catch(ParseException pe) {
fail("ParseException was thrown for current Date.");
}
try {
format.parse("January 31 1970 7:52:34 AM PST");
fail("ParseException was not thrown.");
} catch(ParseException pe) {
//expected
}
try {
format.parse("January 31 1970");
fail("ParseException was not thrown.");
} catch(ParseException pe) {
//expected
}
format = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
try {
Date date = format.parse(format.format(current).toString());
assertEquals(current.getDate(), date.getDate());
assertEquals(current.getDay(), date.getDay());
assertEquals(current.getMonth(), date.getMonth());
assertEquals(current.getYear(), date.getYear());
assertEquals(current.getHours(), date.getHours());
assertEquals(current.getMinutes(), date.getMinutes());
} catch(ParseException pe) {
fail("ParseException was thrown for current Date.");
}
try {
format.parse("January 16, 1970 8:03:52 PM CET");
fail("ParseException was not thrown.");
} catch(ParseException pe) {
//expected
}
}
/**
* @tests java.text.DateFormat#parseObject(String, ParsePosition) Test of
* method java.text.DateFormat#parseObject(String, ParsePosition).
* Case 1: Try to parse correct data string. Case 2: Try to parse
* partialy correct data string. Case 3: Try to use argument
* ParsePosition as null.
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "parseObject",
args = {java.lang.String.class, java.text.ParsePosition.class}
)
public void test_parseObjectLjava_lang_StringLjava_text_ParsePosition() {
DateFormat df = DateFormat.getInstance();
try {
// case 1: Try to parse correct data string.
Date current = new Date();
ParsePosition pp = new ParsePosition(0);
int parseIndex = pp.getIndex();
Date result = (Date) df.parseObject(df.format(current), pp);
assertEquals("Dates are different.", current.getDate(), result.getDate());
assertEquals("Days are different.", current.getDay(), result.getDay());
assertEquals("Months are different.", current.getMonth(), result.getMonth());
assertEquals("Years are different.", current.getYear(), result.getYear());
assertEquals("Hours are different", current.getHours(), result.getHours());
assertEquals("Minutes are diffetrent,", current.getMinutes(), result.getMinutes());
assertTrue("Parse operation return null", result != null);
assertTrue("ParseIndex is incorrect", pp.getIndex() != parseIndex);
// case 2: Try to parse partially correct data string.
pp.setIndex(0);
char[] cur = df.format(current).toCharArray();
cur[cur.length / 2] = 'Z';
String partialCorrect = new String(cur);
result = (Date) df.parseObject(partialCorrect, pp);
assertTrue("Parse operation return not-null", result == null);
assertTrue("ParseIndex is incorrect", pp.getIndex() == 0);
assertTrue("ParseErrorIndex is incorrect",
pp.getErrorIndex() == cur.length / 2);
pp.setIndex(2);
char[] curDate = df.format(current).toCharArray();
char [] newArray = new char[curDate.length + pp.getIndex()];
for(int i = 0; i < curDate.length; i++) {
newArray[i + pp.getIndex()] = curDate[i];
}
result = (Date) df.parseObject(new String(newArray), pp);
//assertEquals(current, result);
assertEquals("Dates are different.", current.getDate(), result.getDate());
assertEquals("Days are different.", current.getDay(), result.getDay());
assertEquals("Months are different.", current.getMonth(), result.getMonth());
assertEquals("Years are different.", current.getYear(), result.getYear());
assertEquals("Hours are different", current.getHours(), result.getHours());
assertEquals("Minutes are diffetrent,", current.getMinutes(), result.getMinutes());
// case 3: Try to use argument ParsePosition as null.
try {
df.parseObject(df.format(current), null);
fail("Expected NullPointerException was not thrown");
} catch (NullPointerException e) {
// expected
}
assertNull(df.parseObject("test", pp));
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
}
/**
* @tests java.text.DateFormat#setLenient(boolean) Test of method
* java.text.DateFormat#setLenient(boolean).
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setLenient",
args = {boolean.class}
)
public void test_setLenientZ() {
DateFormat df = DateFormat.getInstance();
Calendar c = df.getCalendar();
try {
c.setLenient(true);
try {
c.set(Calendar.DAY_OF_MONTH, 32);
c.get(Calendar.DAY_OF_MONTH);
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
c.setLenient(false);
try {
c.set(Calendar.DAY_OF_MONTH, 32);
c.get(Calendar.DAY_OF_MONTH);
fail("Expected IllegalArgumentException was not thrown");
} catch (IllegalArgumentException e) {
// expected
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
} catch (Exception e) {
fail("Uexpected exception " + e.toString());
}
}
/**
* @tests java.text.DateFormat#setTimeZone(TimeZone) Test of method
* java.text.DateFormat#setTimeZone(TimeZone).
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setTimeZone",
args = {java.util.TimeZone.class}
)
public void test_setTimeZoneLjava_util_TimeZone() {
try {
DateFormat format = DateFormat.getInstance();
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
format.setTimeZone(tz);
assertTrue("TimeZone is set incorrectly", tz.equals(format
.getTimeZone()));
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
}
}