blob: 6d2ef74f5f3d77d7cfff16f6a67f0a4c849cdd10 [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 tests.api.java.util;
import dalvik.annotation.AndroidOnly;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.KnownFailure;
import java.util.BitSet;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.SimpleTimeZone;
import java.util.TimeZone;
import java.util.Vector;
@TestTargetClass(GregorianCalendar.class)
public class GregorianCalendarTest extends junit.framework.TestCase {
/**
* @tests java.util.GregorianCalendar#GregorianCalendar()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "GregorianCalendar",
args = {}
)
public void test_Constructor() {
// Test for method java.util.GregorianCalendar()
assertTrue("Constructed incorrect calendar", (new GregorianCalendar()
.isLenient()));
}
/**
* @tests java.util.GregorianCalendar#GregorianCalendar(int, int, int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "GregorianCalendar",
args = {int.class, int.class, int.class}
)
public void test_ConstructorIII() {
// Test for method java.util.GregorianCalendar(int, int, int)
GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER, 13);
assertEquals("Incorrect calendar constructed 1",
1972, gc.get(Calendar.YEAR));
assertTrue("Incorrect calendar constructed 2",
gc.get(Calendar.MONTH) == Calendar.OCTOBER);
assertEquals("Incorrect calendar constructed 3", 13, gc
.get(Calendar.DAY_OF_MONTH));
assertTrue("Incorrect calendar constructed 4", gc.getTimeZone().equals(
TimeZone.getDefault()));
}
/**
* @tests java.util.GregorianCalendar#GregorianCalendar(int, int, int, int,
* int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "GregorianCalendar",
args = {int.class, int.class, int.class, int.class, int.class}
)
public void test_ConstructorIIIII() {
// Test for method java.util.GregorianCalendar(int, int, int, int, int)
GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER,
13, 19, 9);
assertEquals("Incorrect calendar constructed",
1972, gc.get(Calendar.YEAR));
assertTrue("Incorrect calendar constructed",
gc.get(Calendar.MONTH) == Calendar.OCTOBER);
assertEquals("Incorrect calendar constructed", 13, gc
.get(Calendar.DAY_OF_MONTH));
assertEquals("Incorrect calendar constructed", 7, gc.get(Calendar.HOUR));
assertEquals("Incorrect calendar constructed",
1, gc.get(Calendar.AM_PM));
assertEquals("Incorrect calendar constructed",
9, gc.get(Calendar.MINUTE));
assertTrue("Incorrect calendar constructed", gc.getTimeZone().equals(
TimeZone.getDefault()));
//Regression for HARMONY-998
gc = new GregorianCalendar(1900, 0, 0, 0, Integer.MAX_VALUE);
assertEquals("Incorrect calendar constructed",
5983, gc.get(Calendar.YEAR));
}
/**
* @tests java.util.GregorianCalendar#GregorianCalendar(int, int, int, int,
* int, int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "GregorianCalendar",
args = {int.class, int.class, int.class, int.class, int.class, int.class}
)
public void test_ConstructorIIIIII() {
// Test for method java.util.GregorianCalendar(int, int, int, int, int,
// int)
GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER,
13, 19, 9, 59);
assertEquals("Incorrect calendar constructed",
1972, gc.get(Calendar.YEAR));
assertTrue("Incorrect calendar constructed",
gc.get(Calendar.MONTH) == Calendar.OCTOBER);
assertEquals("Incorrect calendar constructed", 13, gc
.get(Calendar.DAY_OF_MONTH));
assertEquals("Incorrect calendar constructed", 7, gc.get(Calendar.HOUR));
assertEquals("Incorrect calendar constructed",
1, gc.get(Calendar.AM_PM));
assertEquals("Incorrect calendar constructed",
9, gc.get(Calendar.MINUTE));
assertEquals("Incorrect calendar constructed",
59, gc.get(Calendar.SECOND));
assertTrue("Incorrect calendar constructed", gc.getTimeZone().equals(
TimeZone.getDefault()));
}
/**
* @tests java.util.GregorianCalendar#GregorianCalendar(java.util.Locale)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "GregorianCalendar",
args = {java.util.Locale.class}
)
public void test_ConstructorLjava_util_Locale() {
// Test for method java.util.GregorianCalendar(java.util.Locale)
Date date = new Date();
GregorianCalendar gcUS = new GregorianCalendar(Locale.US);
gcUS.setTime(date);
GregorianCalendar gcUS2 = new GregorianCalendar(Locale.US);
gcUS2.setTime(date);
GregorianCalendar gcFrance = new GregorianCalendar(Locale.FRANCE);
gcFrance.setTime(date);
assertTrue("Locales not created correctly", gcUS.equals(gcUS2));
assertFalse("Locales not created correctly", gcUS.equals(gcFrance));
}
/**
* @tests java.util.GregorianCalendar#GregorianCalendar(java.util.TimeZone)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "GregorianCalendar",
args = {java.util.TimeZone.class}
)
public void test_ConstructorLjava_util_TimeZone() {
// Test for method java.util.GregorianCalendar(java.util.TimeZone)
Date date = new Date();
TimeZone.getDefault();
GregorianCalendar gc1 = new GregorianCalendar(TimeZone
.getTimeZone("EST"));
gc1.setTime(date);
GregorianCalendar gc2 = new GregorianCalendar(TimeZone
.getTimeZone("CST"));
gc2.setTime(date);
assertFalse(gc1.equals(gc2));
gc1 = new GregorianCalendar(TimeZone
.getTimeZone("GMT+2"));
gc1.setTime(date);
gc2 = new GregorianCalendar(TimeZone
.getTimeZone("GMT+1"));
gc2.setTime(date);
assertTrue("Incorrect calendar returned",
gc1.get(Calendar.HOUR) == ((gc2.get(Calendar.HOUR) + 1) % 12));
// Regression test for HARMONY-2961
SimpleTimeZone timezone = new SimpleTimeZone(-3600 * 24 * 1000 * 2,
"GMT");
GregorianCalendar gc = new GregorianCalendar(timezone);
}
/**
* @tests java.util.GregorianCalendar#GregorianCalendar(java.util.TimeZone,
* java.util.Locale)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "GregorianCalendar",
args = {java.util.TimeZone.class, java.util.Locale.class}
)
public void test_ConstructorLjava_util_TimeZoneLjava_util_Locale() {
// Test for method java.util.GregorianCalendar(java.util.TimeZone,
// java.util.Locale)
Date date = new Date();
TimeZone.getDefault();
GregorianCalendar gc1 = new GregorianCalendar(TimeZone
.getTimeZone("EST"), Locale.US);
gc1.setTime(date);
GregorianCalendar gc2 = new GregorianCalendar(TimeZone
.getTimeZone("EST"), Locale.US);
gc2.setTime(date);
GregorianCalendar gc3 = new GregorianCalendar(TimeZone
.getTimeZone("CST"), Locale.FRANCE);
gc3.setTime(date);
assertTrue(gc1.equals(gc2));
assertFalse(gc2.equals(gc3));
assertFalse(gc3.equals(gc1));
gc1 = new GregorianCalendar(TimeZone
.getTimeZone("GMT+2"), Locale.US);
gc1.setTime(date);
gc3 = new GregorianCalendar(TimeZone
.getTimeZone("GMT+1"), Locale.FRANCE);
gc3.setTime(date);
// CST is 1 hour before EST, add 1 to the CST time and convert to 0-12
// value
assertTrue("Incorrect calendar returned",
gc1.get(Calendar.HOUR) == ((gc3.get(Calendar.HOUR) + 1) % 12));
}
/**
* @tests java.util.GregorianCalendar#add(int, int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "add",
args = {int.class, int.class}
)
@AndroidOnly("This test fails on the RI with version 1.5 but succeeds"
+ "on the RI with version 1.6")
public void test_addII() {
// Test for method void java.util.GregorianCalendar.add(int, int)
GregorianCalendar gc1 = new GregorianCalendar(1998, 11, 6);
gc1.add(GregorianCalendar.YEAR, 1);
assertEquals("Add failed to Increment",
1999, gc1.get(GregorianCalendar.YEAR));
gc1 = new GregorianCalendar(1999, Calendar.JULY, 31);
gc1.add(Calendar.MONTH, 7);
assertEquals("Wrong result year 1", 2000, gc1.get(Calendar.YEAR));
assertTrue("Wrong result month 1",
gc1.get(Calendar.MONTH) == Calendar.FEBRUARY);
assertEquals("Wrong result date 1", 29, gc1.get(Calendar.DATE));
gc1.add(Calendar.YEAR, -1);
assertEquals("Wrong result year 2", 1999, gc1.get(Calendar.YEAR));
assertTrue("Wrong result month 2",
gc1.get(Calendar.MONTH) == Calendar.FEBRUARY);
assertEquals("Wrong result date 2", 28, gc1.get(Calendar.DATE));
gc1 = new GregorianCalendar(TimeZone.getTimeZone("EST"));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.MILLISECOND, 24 * 60 * 60 * 1000);
assertEquals("Wrong time after MILLISECOND change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.SECOND, 24 * 60 * 60);
assertEquals("Wrong time after SECOND change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.MINUTE, 24 * 60);
assertEquals("Wrong time after MINUTE change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.HOUR, 24);
assertEquals("Wrong time after HOUR change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.HOUR_OF_DAY, 24);
assertEquals("Wrong time after HOUR_OF_DAY change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.AM_PM, 2);
assertEquals("Wrong time after AM_PM change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.DATE, 1);
assertEquals("Wrong time after DATE change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.DAY_OF_YEAR, 1);
assertEquals("Wrong time after DAY_OF_YEAR change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.DAY_OF_WEEK, 1);
assertEquals("Wrong time after DAY_OF_WEEK change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.WEEK_OF_YEAR, 1);
assertEquals("Wrong time after WEEK_OF_YEAR change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.WEEK_OF_MONTH, 1);
assertEquals("Wrong time after WEEK_OF_MONTH change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
gc1.add(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
assertEquals("Wrong time after DAY_OF_WEEK_IN_MONTH change", 16, gc1
.get(Calendar.HOUR_OF_DAY));
gc1.clear();
gc1.set(2000, Calendar.APRIL, 1, 23, 0);
gc1.add(Calendar.DATE, 1);
assertTrue("Wrong time after DATE change near DST boundary", gc1
.get(Calendar.MONTH) == Calendar.APRIL
&& gc1.get(Calendar.DATE) == 2
&& gc1.get(Calendar.HOUR_OF_DAY) == 23);
}
/**
* @tests java.util.GregorianCalendar#equals(java.lang.Object)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "equals",
args = {java.lang.Object.class}
)
public void test_equalsLjava_lang_Object() {
// Test for method boolean
// java.util.GregorianCalendar.equals(java.lang.Object)
GregorianCalendar gc1 = new GregorianCalendar(1998, 11, 6);
GregorianCalendar gc2 = new GregorianCalendar(2000, 11, 6);
GregorianCalendar gc3 = new GregorianCalendar(1998, 11, 6);
assertTrue("Equality check failed", gc1.equals(gc3));
assertTrue("Equality check failed", !gc1.equals(gc2));
gc3.setGregorianChange(new Date());
assertTrue("Different gregorian change", !gc1.equals(gc3));
}
/**
* @tests java.util.GregorianCalendar#getActualMaximum(int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getActualMaximum",
args = {int.class}
)
public void test_getActualMaximumI() {
// Test for method int java.util.GregorianCalendar.getActualMaximum(int)
GregorianCalendar gc1 = new GregorianCalendar(1900, 1, 1);
GregorianCalendar gc2 = new GregorianCalendar(1996, 1, 1);
GregorianCalendar gc3 = new GregorianCalendar(1997, 1, 1);
GregorianCalendar gc4 = new GregorianCalendar(2000, 1, 1);
GregorianCalendar gc5 = new GregorianCalendar(2000, 9, 9);
GregorianCalendar gc6 = new GregorianCalendar(2000, 3, 3);
assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 1900",
28, gc1.getActualMaximum(Calendar.DAY_OF_MONTH));
assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 1996",
29, gc2.getActualMaximum(Calendar.DAY_OF_MONTH));
assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 1998",
28, gc3.getActualMaximum(Calendar.DAY_OF_MONTH));
assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 2000",
29, gc4.getActualMaximum(Calendar.DAY_OF_MONTH));
assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Oct 2000",
31, gc5.getActualMaximum(Calendar.DAY_OF_MONTH));
assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Apr 2000",
30, gc6.getActualMaximum(Calendar.DAY_OF_MONTH));
assertTrue("Wrong actual maximum value for MONTH", gc1
.getActualMaximum(Calendar.MONTH) == Calendar.DECEMBER);
assertEquals("Wrong actual maximum value for HOUR_OF_DAY", 23, gc1
.getActualMaximum(Calendar.HOUR_OF_DAY));
assertEquals("Wrong actual maximum value for HOUR", 11, gc1
.getActualMaximum(Calendar.HOUR));
assertEquals("Wrong actual maximum value for DAY_OF_WEEK_IN_MONTH", 4, gc6
.getActualMaximum(Calendar.DAY_OF_WEEK_IN_MONTH));
// Regression test for harmony 2954
Date date = new Date(Date.parse("Jan 15 00:00:01 GMT 2000"));
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(Date.parse("Dec 15 00:00:01 GMT 1582"));
assertEquals(355, gc.getActualMaximum(Calendar.DAY_OF_YEAR));
gc.setGregorianChange(date);
gc.setTimeInMillis(Date.parse("Jan 16 00:00:01 GMT 2000"));
assertEquals(353, gc.getActualMaximum(Calendar.DAY_OF_YEAR));
//Regression test for HARMONY-3004
gc = new GregorianCalendar(1900, 7, 1);
String[] ids = TimeZone.getAvailableIDs();
for (int i = 0; i < ids.length; i++) {
TimeZone tz = TimeZone.getTimeZone(ids[i]);
gc.setTimeZone(tz);
for (int j = 1900; j < 2000; j++) {
gc.set(Calendar.YEAR, j);
assertEquals(7200000, gc.getActualMaximum(Calendar.DST_OFFSET));
}
}
}
/**
* @tests java.util.GregorianCalendar#getActualMinimum(int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getActualMinimum",
args = {int.class}
)
public void test_getActualMinimumI() {
// Test for method int java.util.GregorianCalendar.getActualMinimum(int)
GregorianCalendar gc1 = new GregorianCalendar(1900, 1, 1);
new GregorianCalendar(1996, 1, 1);
new GregorianCalendar(1997, 1, 1);
new GregorianCalendar(2000, 1, 1);
new GregorianCalendar(2000, 9, 9);
GregorianCalendar gc6 = new GregorianCalendar(2000, 3, 3);
assertEquals("Wrong actual minimum value for DAY_OF_MONTH for Feb 1900",
1, gc1.getActualMinimum(Calendar.DAY_OF_MONTH));
assertTrue("Wrong actual minimum value for MONTH", gc1
.getActualMinimum(Calendar.MONTH) == Calendar.JANUARY);
assertEquals("Wrong actual minimum value for HOUR_OF_DAY", 0, gc1
.getActualMinimum(Calendar.HOUR_OF_DAY));
assertEquals("Wrong actual minimum value for HOUR", 0, gc1
.getActualMinimum(Calendar.HOUR));
assertEquals("Wrong actual minimum value for DAY_OF_WEEK_IN_MONTH", 1, gc6
.getActualMinimum(Calendar.DAY_OF_WEEK_IN_MONTH));
}
/**
* @tests java.util.GregorianCalendar#getGreatestMinimum(int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getGreatestMinimum",
args = {int.class}
)
public void test_getGreatestMinimumI() {
// Test for method int
// java.util.GregorianCalendar.getGreatestMinimum(int)
GregorianCalendar gc = new GregorianCalendar();
assertEquals("Wrong greatest minimum value for DAY_OF_MONTH", 1, gc
.getGreatestMinimum(Calendar.DAY_OF_MONTH));
assertTrue("Wrong greatest minimum value for MONTH", gc
.getGreatestMinimum(Calendar.MONTH) == Calendar.JANUARY);
assertEquals("Wrong greatest minimum value for HOUR_OF_DAY", 0, gc
.getGreatestMinimum(Calendar.HOUR_OF_DAY));
assertEquals("Wrong greatest minimum value for HOUR", 0, gc
.getGreatestMinimum(Calendar.HOUR));
BitSet result = new BitSet();
int[] min = { 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -46800000,
0 };
for (int i = 0; i < min.length; i++) {
if (gc.getGreatestMinimum(i) != min[i])
result.set(i);
}
assertTrue("Wrong greatest min for " + result, result.length() == 0);
}
/**
* @tests java.util.GregorianCalendar#getGregorianChange()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getGregorianChange",
args = {}
)
public void test_getGregorianChange() {
// Test for method java.util.Date
// java.util.GregorianCalendar.getGregorianChange()
GregorianCalendar gc = new GregorianCalendar();
GregorianCalendar returnedChange = new GregorianCalendar(TimeZone
.getTimeZone("EST"));
returnedChange.setTime(gc.getGregorianChange());
assertEquals("Returned incorrect year",
1582, returnedChange.get(Calendar.YEAR));
assertTrue("Returned incorrect month", returnedChange
.get(Calendar.MONTH) == Calendar.OCTOBER);
assertEquals("Returned incorrect day of month", 4, returnedChange
.get(Calendar.DAY_OF_MONTH));
}
/**
* @tests java.util.GregorianCalendar#getLeastMaximum(int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getLeastMaximum",
args = {int.class}
)
public void test_getLeastMaximumI() {
// Test for method int java.util.GregorianCalendar.getLeastMaximum(int)
GregorianCalendar gc = new GregorianCalendar();
assertEquals("Wrong least maximum value for DAY_OF_MONTH", 28, gc
.getLeastMaximum(Calendar.DAY_OF_MONTH));
assertTrue("Wrong least maximum value for MONTH", gc
.getLeastMaximum(Calendar.MONTH) == Calendar.DECEMBER);
assertEquals("Wrong least maximum value for HOUR_OF_DAY", 23, gc
.getLeastMaximum(Calendar.HOUR_OF_DAY));
assertEquals("Wrong least maximum value for HOUR", 11, gc
.getLeastMaximum(Calendar.HOUR));
BitSet result = new BitSet();
Vector values = new Vector();
int[] max = { 1, 292269054, 11, 50, 3, 28, 355, 7, 3, 1, 11, 23, 59,
59, 999, 50400000, 1200000 };
for (int i = 0; i < max.length; i++) {
if (gc.getLeastMaximum(i) != max[i]) {
result.set(i);
values.add(new Integer(gc.getLeastMaximum(i)));
}
}
assertTrue("Wrong least max for " + result + " = " + values, result
.length() == 0);
// Regression test for harmony-2947
Date date = new Date(Date.parse("Jan 1 00:00:01 GMT 2000"));
gc = new GregorianCalendar();
gc.setGregorianChange(date);
gc.setTime(date);
assertEquals(gc.getActualMaximum(Calendar.WEEK_OF_YEAR), gc
.getLeastMaximum(Calendar.WEEK_OF_YEAR));
}
/**
* @tests java.util.GregorianCalendar#getMaximum(int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getMaximum",
args = {int.class}
)
public void test_getMaximumI() {
// Test for method int java.util.GregorianCalendar.getMaximum(int)
GregorianCalendar gc = new GregorianCalendar();
assertEquals("Wrong maximum value for DAY_OF_MONTH", 31, gc
.getMaximum(Calendar.DAY_OF_MONTH));
assertTrue("Wrong maximum value for MONTH", gc
.getMaximum(Calendar.MONTH) == Calendar.DECEMBER);
assertEquals("Wrong maximum value for HOUR_OF_DAY", 23, gc
.getMaximum(Calendar.HOUR_OF_DAY));
assertEquals("Wrong maximum value for HOUR",
11, gc.getMaximum(Calendar.HOUR));
BitSet result = new BitSet();
Vector values = new Vector();
int[] max = { 1, 292278994, 11, 53, 6, 31, 366, 7, 6, 1, 11, 23, 59,
59, 999, 50400000, 7200000 };
for (int i = 0; i < max.length; i++) {
if (gc.getMaximum(i) != max[i]) {
result.set(i);
values.add(new Integer(gc.getMaximum(i)));
}
}
assertTrue("Wrong max for " + result + " = " + values,
result.length() == 0);
}
/**
* @tests java.util.GregorianCalendar#getMinimum(int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getMinimum",
args = {int.class}
)
public void test_getMinimumI() {
// Test for method int java.util.GregorianCalendar.getMinimum(int)
GregorianCalendar gc = new GregorianCalendar();
assertEquals("Wrong minimum value for DAY_OF_MONTH", 1, gc
.getMinimum(Calendar.DAY_OF_MONTH));
assertTrue("Wrong minimum value for MONTH", gc
.getMinimum(Calendar.MONTH) == Calendar.JANUARY);
assertEquals("Wrong minimum value for HOUR_OF_DAY", 0, gc
.getMinimum(Calendar.HOUR_OF_DAY));
assertEquals("Wrong minimum value for HOUR",
0, gc.getMinimum(Calendar.HOUR));
BitSet result = new BitSet();
int[] min = { 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -46800000,
0 };
for (int i = 0; i < min.length; i++) {
if (gc.getMinimum(i) != min[i])
result.set(i);
}
assertTrue("Wrong min for " + result, result.length() == 0);
}
/**
* @tests java.util.GregorianCalendar#isLeapYear(int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "isLeapYear",
args = {int.class}
)
public void test_isLeapYearI() {
// Test for method boolean java.util.GregorianCalendar.isLeapYear(int)
GregorianCalendar gc = new GregorianCalendar(1998, 11, 6);
assertTrue("Returned incorrect value for leap year", !gc
.isLeapYear(1998));
assertTrue("Returned incorrect value for leap year", gc
.isLeapYear(2000));
}
/**
* @tests java.util.GregorianCalendar#roll(int, int)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "roll",
args = {int.class, int.class}
)
public void test_rollII() {
// Test for method void java.util.GregorianCalendar.roll(int, int)
GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER, 8,
2, 5, 0);
gc.roll(Calendar.DAY_OF_MONTH, -1);
assertTrue("Failed to roll DAY_OF_MONTH down by 1", gc
.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 7, 2, 5,
0)));
gc = new GregorianCalendar(1972, Calendar.OCTOBER, 8, 2, 5, 0);
gc.roll(Calendar.DAY_OF_MONTH, 25);
assertTrue("Failed to roll DAY_OF_MONTH up by 25", gc
.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 2, 2, 5,
0)));
gc = new GregorianCalendar(1972, Calendar.OCTOBER, 8, 2, 5, 0);
gc.roll(Calendar.DAY_OF_MONTH, -10);
assertTrue("Failed to roll DAY_OF_MONTH down by 10", gc
.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 29, 2, 5,
0)));
}
/**
* @tests java.util.GregorianCalendar#roll(int, boolean)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "roll",
args = {int.class, boolean.class}
)
public void test_rollIZ() {
// Test for method void java.util.GregorianCalendar.roll(int, boolean)
GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER,
13, 19, 9, 59);
gc.roll(Calendar.DAY_OF_MONTH, false);
assertTrue("Failed to roll day_of_month down", gc
.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 12, 19,
9, 59)));
gc = new GregorianCalendar(1972, Calendar.OCTOBER, 13, 19, 9, 59);
gc.roll(Calendar.DAY_OF_MONTH, true);
assertTrue("Failed to roll day_of_month up", gc
.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 14, 19,
9, 59)));
gc = new GregorianCalendar(1972, Calendar.OCTOBER, 31, 19, 9, 59);
gc.roll(Calendar.DAY_OF_MONTH, true);
assertTrue("Failed to roll day_of_month up", gc
.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 1, 19, 9,
59)));
GregorianCalendar cal = new GregorianCalendar();
int result;
try {
cal.roll(Calendar.ZONE_OFFSET, true);
result = 0;
} catch (IllegalArgumentException e) {
result = 1;
}
assertEquals("ZONE_OFFSET roll", 1, result);
try {
cal.roll(Calendar.DST_OFFSET, true);
result = 0;
} catch (IllegalArgumentException e) {
result = 1;
}
assertEquals("ZONE_OFFSET roll", 1, result);
cal.set(2004, Calendar.DECEMBER, 31, 5, 0, 0);
cal.roll(Calendar.WEEK_OF_YEAR, true);
assertTrue("Wrong year: " + cal.getTime(),
cal.get(Calendar.YEAR) == 2004);
assertTrue("Wrong month: " + cal.getTime(),
cal.get(Calendar.MONTH) == Calendar.JANUARY);
assertTrue("Wrong date: " + cal.getTime(), cal.get(Calendar.DATE) == 9);
}
/**
* @tests java.util.GregorianCalendar#setGregorianChange(java.util.Date)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setGregorianChange",
args = {java.util.Date.class}
)
public void test_setGregorianChangeLjava_util_Date() {
// Test for method void
// java.util.GregorianCalendar.setGregorianChange(java.util.Date)
GregorianCalendar gc1 = new GregorianCalendar(1582, Calendar.OCTOBER,
4, 0, 0);
GregorianCalendar gc2 = new GregorianCalendar(1972, Calendar.OCTOBER,
13, 0, 0);
gc1.setGregorianChange(gc2.getTime());
assertTrue("Returned incorrect value", gc2.getTime().equals(
gc1.getGregorianChange()));
}
/**
* @tests java.util.GregorianCalendar#clone()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "clone",
args = {}
)
public void test_clone() {
// Regression for HARMONY-498
GregorianCalendar gCalend = new GregorianCalendar();
gCalend.set(Calendar.MILLISECOND, 0);
int dayOfMonth = gCalend.get(Calendar.DAY_OF_MONTH);
// create clone object and change date
GregorianCalendar gCalendClone = (GregorianCalendar) gCalend.clone();
gCalendClone.add(Calendar.DATE, 1);
assertEquals("Before", dayOfMonth, gCalend.get(Calendar.DAY_OF_MONTH));
gCalend.set(Calendar.MILLISECOND, 0);//changes nothing
assertEquals("After", dayOfMonth, gCalend.get(Calendar.DAY_OF_MONTH));
}
/**
* @tests java.util.GregorianCalendar#getMinimalDaysInFirstWeek()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getMinimalDaysInFirstWeek",
args = {}
)
@KnownFailure("Some difference in timezones and/or locales data"
+ "Who is right, the CLDR or the RI?")
public void test_getMinimalDaysInFirstWeek() {
// Regression for Harmony-1037
GregorianCalendar g = new GregorianCalendar(TimeZone
.getTimeZone("Paris/France"), new Locale("en", "GB"));
int minimalDaysInFirstWeek = g.getMinimalDaysInFirstWeek();
assertEquals(4, minimalDaysInFirstWeek);
g = new GregorianCalendar(TimeZone.getTimeZone("Paris/France"),
new Locale("fr", "FR"));
minimalDaysInFirstWeek = g.getMinimalDaysInFirstWeek();
assertEquals(4, minimalDaysInFirstWeek);
g = new GregorianCalendar(TimeZone.getTimeZone("Europe/London"),
new Locale("fr", "CA"));
minimalDaysInFirstWeek = g.getMinimalDaysInFirstWeek();
assertEquals(1, minimalDaysInFirstWeek);
}
/**
* @tests java.util.GregorianCalendar#computeTime()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Checks computeTime indirectly.",
method = "computeTime",
args = {}
)
public void test_computeTime() {
// Regression for Harmony-493
GregorianCalendar g = new GregorianCalendar(
TimeZone.getTimeZone("Europe/London"),
new Locale("en", "GB")
);
g.clear();
g.set(2006, 02, 26, 01, 50, 00);
assertEquals(1143337800000L, g.getTimeInMillis());
GregorianCalendar g1 = new GregorianCalendar(
TimeZone.getTimeZone("Europe/Moscow")
);
g1.clear();
g1.set(2006, 02, 26, 02, 20, 00); // in the DST transition interval
assertEquals(1143328800000L, g1.getTimeInMillis());
assertEquals(3, g1.get(Calendar.HOUR_OF_DAY));
g1.clear();
g1.set(2006, 9, 29, 02, 50, 00); // transition from DST
assertEquals(1162079400000L, g1.getTimeInMillis());
assertEquals(2, g1.get(Calendar.HOUR_OF_DAY));
// End of regression test
g1.set(2006, -9, 29, 02, 50, 00); // transition from DST
g1.setLenient(false);
try {
g1.getTimeInMillis();
fail("IllegalArgumentException expected");
} catch (IllegalArgumentException e) {
//expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Checks computeFields indirectly.",
method = "computeFields",
args = {}
)
public void test_computeFields() {
GregorianCalendar g = new GregorianCalendar(
TimeZone.getTimeZone("Europe/London"),
new Locale("en", "GB")
);
g.clear();
g.setTimeInMillis(1222185600225L);
assertEquals(1, g.get(Calendar.ERA));
assertEquals(2008, g.get(Calendar.YEAR));
assertEquals(Calendar.SEPTEMBER, g.get(Calendar.MONTH));
assertEquals(23, g.get(Calendar.DAY_OF_MONTH));
assertEquals(17, g.get(Calendar.HOUR_OF_DAY));
assertEquals(0, g.get(Calendar.MINUTE));
}
/**
* @tests java.util.GregorianCalendar#get(int)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "Doesn't verify ArrayIndexOutOfBoundsException.",
method = "get",
args = {int.class}
)
@SuppressWarnings("deprecation")
public void test_getI() {
// Regression test for HARMONY-2959
Date date = new Date(Date.parse("Jan 15 00:00:01 GMT 2000"));
GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
gc.setGregorianChange(date);
gc.setTimeInMillis(Date.parse("Dec 24 00:00:01 GMT 2000"));
assertEquals(346, gc.get(Calendar.DAY_OF_YEAR));
// Regression test for HARMONY-3003
date = new Date(Date.parse("Feb 28 00:00:01 GMT 2000"));
gc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
gc.setGregorianChange(date);
gc.setTimeInMillis(Date.parse("Dec 1 00:00:01 GMT 2000"));
assertEquals(1, gc.get(Calendar.DAY_OF_MONTH));
assertEquals(11, gc.get(Calendar.MONTH));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "hashCode",
args = {}
)
public void test_hashCode() {
GregorianCalendar g = new GregorianCalendar(
TimeZone.getTimeZone("Europe/London"),
new Locale("en", "GB")
);
g.clear();
g.setTimeInMillis(1222185600225L);
GregorianCalendar g1 = new GregorianCalendar(
TimeZone.getTimeZone("Europe/Moscow"));
g1.clear();
g1.set(2008, Calendar.SEPTEMBER, 23, 18, 0, 0);
assertNotSame(g.hashCode(), g1.hashCode());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setFirstDayOfWeek",
args = {int.class}
)
public void test_setFirstDayOfWeekI() {
GregorianCalendar g = new GregorianCalendar(
TimeZone.getTimeZone("Europe/London"),
new Locale("en", "GB"));
for (int i = 0; i < 10; i++) {
g.setFirstDayOfWeek(i);
assertEquals(i, g.getFirstDayOfWeek());
}
g.setLenient(false);
g.setFirstDayOfWeek(10);
g.setFirstDayOfWeek(-10);
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setMinimalDaysInFirstWeek",
args = {int.class}
)
public void test_setMinimalDaysInFirstWeekI() {
GregorianCalendar g = new GregorianCalendar(
TimeZone.getTimeZone("Europe/London"),
new Locale("en", "GB"));
for (int i = 0; i < 10; i++) {
g.setMinimalDaysInFirstWeek(i);
assertEquals(i, g.getMinimalDaysInFirstWeek());
}
g.setLenient(false);
g.setMinimalDaysInFirstWeek(10);
g.setMinimalDaysInFirstWeek(-10);
}
/**
* Sets up the fixture, for example, open a network connection. This method
* is called before a test is executed.
*/
protected void setUp() {
Locale.setDefault(Locale.US);
}
/**
* Tears down the fixture, for example, close a network connection. This
* method is called after a test is executed.
*/
protected void tearDown() {
}
}