1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.BitSet;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Calendar;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Date;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.GregorianCalendar;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Locale;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.SimpleTimeZone;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TimeZone;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Vector;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class GregorianCalendarTest extends junit.framework.TestCase {
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#GregorianCalendar()
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_Constructor() {
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.GregorianCalendar()
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Constructed incorrect calendar", (new GregorianCalendar()
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.isLenient()));
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#GregorianCalendar(int, int, int)
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorIII() {
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.GregorianCalendar(int, int, int)
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER, 13);
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed 1",
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1972, gc.get(Calendar.YEAR));
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Incorrect calendar constructed 2",
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				gc.get(Calendar.MONTH) == Calendar.OCTOBER);
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed 3", 13, gc
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.DAY_OF_MONTH));
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Incorrect calendar constructed 4", gc.getTimeZone().equals(
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				TimeZone.getDefault()));
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#GregorianCalendar(int, int, int, int,
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        int)
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorIIIII() {
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.GregorianCalendar(int, int, int, int, int)
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER,
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				13, 19, 9);
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed",
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1972, gc.get(Calendar.YEAR));
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Incorrect calendar constructed",
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				gc.get(Calendar.MONTH) == Calendar.OCTOBER);
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed", 13, gc
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.DAY_OF_MONTH));
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed", 7, gc.get(Calendar.HOUR));
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed",
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1, gc.get(Calendar.AM_PM));
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed",
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				9, gc.get(Calendar.MINUTE));
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Incorrect calendar constructed", gc.getTimeZone().equals(
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				TimeZone.getDefault()));
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //Regression for HARMONY-998
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc = new GregorianCalendar(1900, 0, 0, 0, Integer.MAX_VALUE);
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed",
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				5983, gc.get(Calendar.YEAR));
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#GregorianCalendar(int, int, int, int,
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        int, int)
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorIIIIII() {
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.GregorianCalendar(int, int, int, int, int,
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// int)
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER,
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				13, 19, 9, 59);
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed",
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1972, gc.get(Calendar.YEAR));
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Incorrect calendar constructed",
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				gc.get(Calendar.MONTH) == Calendar.OCTOBER);
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed", 13, gc
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.DAY_OF_MONTH));
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed", 7, gc.get(Calendar.HOUR));
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed",
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1, gc.get(Calendar.AM_PM));
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed",
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				9, gc.get(Calendar.MINUTE));
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Incorrect calendar constructed",
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				59, gc.get(Calendar.SECOND));
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Incorrect calendar constructed", gc.getTimeZone().equals(
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				TimeZone.getDefault()));
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#GregorianCalendar(java.util.Locale)
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorLjava_util_Locale() {
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.GregorianCalendar(java.util.Locale)
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Date date = new Date();
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gcJapan = new GregorianCalendar(Locale.JAPAN);
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gcJapan.setTime(date);
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gcJapan2 = new GregorianCalendar(Locale.JAPAN);
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gcJapan2.setTime(date);
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gcItaly = new GregorianCalendar(Locale.ITALY);
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gcItaly.setTime(date);
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Locales not created correctly", gcJapan.equals(gcJapan2)
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				&& !gcJapan.equals(gcItaly));
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#GregorianCalendar(java.util.TimeZone)
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorLjava_util_TimeZone() {
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.GregorianCalendar(java.util.TimeZone)
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Date date = new Date(2008,1,1);
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TimeZone.getDefault();
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc1 = new GregorianCalendar(TimeZone
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getTimeZone("EST"));
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.setTime(date);
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc2 = new GregorianCalendar(TimeZone
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getTimeZone("CST"));
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc2.setTime(date);
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// CST is 1 hour before EST, add 1 to the CST time and convert to 0-12
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// value
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Incorrect calendar returned",
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				gc1.get(Calendar.HOUR) == ((gc2.get(Calendar.HOUR) + 1) % 12));
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-2961
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SimpleTimeZone timezone = new SimpleTimeZone(-3600 * 24 * 1000 * 2,
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "GMT");
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        GregorianCalendar gc = new GregorianCalendar(timezone);
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	   // Regression test for HARMONY-5195
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           Calendar c1 = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           c1.set(Calendar.YEAR,1999);
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           c1.set(Calendar.MONTH,Calendar.JUNE);
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           c1.set(Calendar.DAY_OF_MONTH,2);
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           c1.set(Calendar.HOUR,15);
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           c1.set(Calendar.MINUTE,34);
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           c1.set(Calendar.SECOND,16);
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           assertEquals(34,c1.get(Calendar.MINUTE));
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           c1.setTimeZone(new SimpleTimeZone(60000, "ONE MINUTE"));
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           assertEquals(35,c1.get(Calendar.MINUTE));
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#GregorianCalendar(java.util.TimeZone,
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.util.Locale)
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorLjava_util_TimeZoneLjava_util_Locale() {
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.GregorianCalendar(java.util.TimeZone,
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Locale)
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Date date = new Date(2008,1,1);
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TimeZone.getDefault();
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc1 = new GregorianCalendar(TimeZone
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getTimeZone("EST"), Locale.JAPAN);
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.setTime(date);
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc2 = new GregorianCalendar(TimeZone
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getTimeZone("EST"), Locale.JAPAN);
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc2.setTime(date);
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc3 = new GregorianCalendar(TimeZone
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getTimeZone("CST"), Locale.ITALY);
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc3.setTime(date);
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// CST is 1 hour before EST, add 1 to the CST time and convert to 0-12
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// value
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Incorrect calendar returned",
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				gc1.get(Calendar.HOUR) == ((gc3.get(Calendar.HOUR) + 1) % 12));
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Locales not created correctly", gc1.equals(gc2)
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				&& !gc1.equals(gc3));
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#add(int, int)
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_addII() {
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.GregorianCalendar.add(int, int)
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc1 = new GregorianCalendar(1998, 11, 6);
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(GregorianCalendar.YEAR, 1);
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Add failed to Increment",
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1999, gc1.get(GregorianCalendar.YEAR));
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1 = new GregorianCalendar(1999, Calendar.JULY, 31);
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.MONTH, 7);
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong result year 1", 2000, gc1.get(Calendar.YEAR));
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong result month 1",
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				gc1.get(Calendar.MONTH) == Calendar.FEBRUARY);
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong result date 1", 29, gc1.get(Calendar.DATE));
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.YEAR, -1);
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong result year 2", 1999, gc1.get(Calendar.YEAR));
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong result month 2",
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				gc1.get(Calendar.MONTH) == Calendar.FEBRUARY);
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong result date 2", 28, gc1.get(Calendar.DATE));
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1 = new GregorianCalendar(TimeZone.getTimeZone("EST"));
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.MILLISECOND, 24 * 60 * 60 * 1000);
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after MILLISECOND change", 16, gc1
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.SECOND, 24 * 60 * 60);
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after SECOND change", 16, gc1
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.MINUTE, 24 * 60);
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after MINUTE change", 16, gc1
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.HOUR, 24);
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after HOUR change", 16, gc1
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.HOUR_OF_DAY, 24);
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after HOUR_OF_DAY change", 16, gc1
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.AM_PM, 2);
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after AM_PM change", 16, gc1
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.DATE, 1);
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after DATE change", 16, gc1
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.DAY_OF_YEAR, 1);
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after DAY_OF_YEAR change", 16, gc1
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.DAY_OF_WEEK, 1);
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after DAY_OF_WEEK change", 16, gc1
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.WEEK_OF_YEAR, 1);
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after WEEK_OF_YEAR change", 16, gc1
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.WEEK_OF_MONTH, 1);
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after WEEK_OF_MONTH change", 16, gc1
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong time after DAY_OF_WEEK_IN_MONTH change", 16, gc1
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.HOUR_OF_DAY));
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.clear();
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.set(2000, Calendar.APRIL, 1, 23, 0);
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.add(Calendar.DATE, 1);
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong time after DATE change near DST boundary", gc1
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.MONTH) == Calendar.APRIL
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				&& gc1.get(Calendar.DATE) == 2
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				&& gc1.get(Calendar.HOUR_OF_DAY) == 23);
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#equals(java.lang.Object)
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_equalsLjava_lang_Object() {
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method boolean
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.GregorianCalendar.equals(java.lang.Object)
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc1 = new GregorianCalendar(1998, 11, 6);
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc2 = new GregorianCalendar(2000, 11, 6);
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc3 = new GregorianCalendar(1998, 11, 6);
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Equality check failed", gc1.equals(gc3));
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Equality check failed", !gc1.equals(gc2));
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc3.setGregorianChange(new Date());
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Different gregorian change", !gc1.equals(gc3));
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#getActualMaximum(int)
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getActualMaximumI() {
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int java.util.GregorianCalendar.getActualMaximum(int)
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc1 = new GregorianCalendar(1900, 1, 1);
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc2 = new GregorianCalendar(1996, 1, 1);
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc3 = new GregorianCalendar(1997, 1, 1);
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc4 = new GregorianCalendar(2000, 1, 1);
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc5 = new GregorianCalendar(2000, 9, 9);
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc6 = new GregorianCalendar(2000, 3, 3);
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 1900",
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				28, gc1.getActualMaximum(Calendar.DAY_OF_MONTH));
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 1996",
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				29, gc2.getActualMaximum(Calendar.DAY_OF_MONTH));
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 1998",
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				28, gc3.getActualMaximum(Calendar.DAY_OF_MONTH));
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 2000",
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				29, gc4.getActualMaximum(Calendar.DAY_OF_MONTH));
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Oct 2000",
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				31, gc5.getActualMaximum(Calendar.DAY_OF_MONTH));
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Apr 2000",
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				30, gc6.getActualMaximum(Calendar.DAY_OF_MONTH));
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong actual maximum value for MONTH", gc1
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getActualMaximum(Calendar.MONTH) == Calendar.DECEMBER);
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual maximum value for HOUR_OF_DAY", 23, gc1
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getActualMaximum(Calendar.HOUR_OF_DAY));
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual maximum value for HOUR", 11, gc1
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getActualMaximum(Calendar.HOUR));
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual maximum value for DAY_OF_WEEK_IN_MONTH", 4, gc6
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getActualMaximum(Calendar.DAY_OF_WEEK_IN_MONTH));
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for harmony 2954
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date = new Date(Date.parse("Jan 15 00:00:01 GMT 2000"));
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        GregorianCalendar gc = new GregorianCalendar();
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.setTimeInMillis(Date.parse("Dec 15 00:00:01 GMT 1582"));
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(355, gc.getActualMaximum(Calendar.DAY_OF_YEAR));
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.setGregorianChange(date);
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.setTimeInMillis(Date.parse("Jan 16 00:00:01 GMT 2000"));
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(353, gc.getActualMaximum(Calendar.DAY_OF_YEAR));
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //Regression test for HARMONY-3004
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc = new GregorianCalendar(1900, 7, 1);
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] ids = TimeZone.getAvailableIDs();
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < ids.length; i++) {
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            TimeZone tz = TimeZone.getTimeZone(ids[i]);
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            gc.setTimeZone(tz);
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int j = 1900; j < 2000; j++) {
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                gc.set(Calendar.YEAR, j);
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(7200000, gc.getActualMaximum(Calendar.DST_OFFSET));
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#getActualMinimum(int)
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getActualMinimumI() {
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int java.util.GregorianCalendar.getActualMinimum(int)
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc1 = new GregorianCalendar(1900, 1, 1);
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new GregorianCalendar(1996, 1, 1);
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new GregorianCalendar(1997, 1, 1);
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new GregorianCalendar(2000, 1, 1);
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new GregorianCalendar(2000, 9, 9);
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc6 = new GregorianCalendar(2000, 3, 3);
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual minimum value for DAY_OF_MONTH for Feb 1900",
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1, gc1.getActualMinimum(Calendar.DAY_OF_MONTH));
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong actual minimum value for MONTH", gc1
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getActualMinimum(Calendar.MONTH) == Calendar.JANUARY);
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual minimum value for HOUR_OF_DAY", 0, gc1
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getActualMinimum(Calendar.HOUR_OF_DAY));
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual minimum value for HOUR", 0, gc1
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getActualMinimum(Calendar.HOUR));
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong actual minimum value for DAY_OF_WEEK_IN_MONTH", 1, gc6
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getActualMinimum(Calendar.DAY_OF_WEEK_IN_MONTH));
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#getGreatestMinimum(int)
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getGreatestMinimumI() {
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.GregorianCalendar.getGreatestMinimum(int)
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar();
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong greatest minimum value for DAY_OF_MONTH", 1, gc
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getGreatestMinimum(Calendar.DAY_OF_MONTH));
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong greatest minimum value for MONTH", gc
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getGreatestMinimum(Calendar.MONTH) == Calendar.JANUARY);
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong greatest minimum value for HOUR_OF_DAY", 0, gc
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getGreatestMinimum(Calendar.HOUR_OF_DAY));
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong greatest minimum value for HOUR", 0, gc
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getGreatestMinimum(Calendar.HOUR));
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		BitSet result = new BitSet();
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int[] min = { 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -46800000,
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				0 };
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < min.length; i++) {
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (gc.getGreatestMinimum(i) != min[i])
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result.set(i);
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong greatest min for " + result, result.length() == 0);
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#getGregorianChange()
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getGregorianChange() {
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Date
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.GregorianCalendar.getGregorianChange()
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar();
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar returnedChange = new GregorianCalendar(TimeZone
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getTimeZone("EST"));
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		returnedChange.setTime(gc.getGregorianChange());
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Returned incorrect year",
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1582, returnedChange.get(Calendar.YEAR));
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned incorrect month", returnedChange
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.MONTH) == Calendar.OCTOBER);
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Returned incorrect day of month", 4, returnedChange
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(Calendar.DAY_OF_MONTH));
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#getLeastMaximum(int)
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getLeastMaximumI() {
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int java.util.GregorianCalendar.getLeastMaximum(int)
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar();
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong least maximum value for DAY_OF_MONTH", 28, gc
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getLeastMaximum(Calendar.DAY_OF_MONTH));
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong least maximum value for MONTH", gc
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getLeastMaximum(Calendar.MONTH) == Calendar.DECEMBER);
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong least maximum value for HOUR_OF_DAY", 23, gc
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getLeastMaximum(Calendar.HOUR_OF_DAY));
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong least maximum value for HOUR", 11, gc
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getLeastMaximum(Calendar.HOUR));
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		BitSet result = new BitSet();
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Vector values = new Vector();
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int[] max = { 1, 292269054, 11, 50, 3, 28, 355, 7, 3, 1, 11, 23, 59,
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                59, 999, 50400000, 1200000 };
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < max.length; i++) {
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (gc.getLeastMaximum(i) != max[i]) {
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result.set(i);
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				values.add(new Integer(gc.getLeastMaximum(i)));
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong least max for " + result + " = " + values, result
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.length() == 0);
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for harmony-2947
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date = new Date(Date.parse("Jan 1 00:00:01 GMT 2000"));
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc = new GregorianCalendar();
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.setGregorianChange(date);
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.setTime(date);
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(gc.getActualMaximum(Calendar.WEEK_OF_YEAR), gc
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getLeastMaximum(Calendar.WEEK_OF_YEAR));
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#getMaximum(int)
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getMaximumI() {
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int java.util.GregorianCalendar.getMaximum(int)
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar();
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong maximum value for DAY_OF_MONTH", 31, gc
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getMaximum(Calendar.DAY_OF_MONTH));
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong maximum value for MONTH", gc
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getMaximum(Calendar.MONTH) == Calendar.DECEMBER);
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong maximum value for HOUR_OF_DAY", 23, gc
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getMaximum(Calendar.HOUR_OF_DAY));
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong maximum value for HOUR",
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				11, gc.getMaximum(Calendar.HOUR));
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		BitSet result = new BitSet();
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Vector values = new Vector();
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int[] max = { 1, 292278994, 11, 53, 6, 31, 366, 7, 6, 1, 11, 23, 59,
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				59, 999, 50400000, 7200000 };
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < max.length; i++) {
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (gc.getMaximum(i) != max[i]) {
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result.set(i);
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				values.add(new Integer(gc.getMaximum(i)));
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong max for " + result + " = " + values,
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result.length() == 0);
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#getMinimum(int)
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getMinimumI() {
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int java.util.GregorianCalendar.getMinimum(int)
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar();
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong minimum value for DAY_OF_MONTH", 1, gc
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getMinimum(Calendar.DAY_OF_MONTH));
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong minimum value for MONTH", gc
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getMinimum(Calendar.MONTH) == Calendar.JANUARY);
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong minimum value for HOUR_OF_DAY", 0, gc
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getMinimum(Calendar.HOUR_OF_DAY));
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong minimum value for HOUR",
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				0, gc.getMinimum(Calendar.HOUR));
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		BitSet result = new BitSet();
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int[] min = { 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -46800000,
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				0 };
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < min.length; i++) {
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (gc.getMinimum(i) != min[i])
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result.set(i);
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong min for " + result, result.length() == 0);
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#isLeapYear(int)
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_isLeapYearI() {
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method boolean java.util.GregorianCalendar.isLeapYear(int)
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar(1998, 11, 6);
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned incorrect value for leap year", !gc
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.isLeapYear(1998));
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned incorrect value for leap year", gc
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.isLeapYear(2000));
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#roll(int, int)
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_rollII() {
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.GregorianCalendar.roll(int, int)
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER, 8,
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				2, 5, 0);
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc.roll(Calendar.DAY_OF_MONTH, -1);
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Failed to roll DAY_OF_MONTH down by 1", gc
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 7, 2, 5,
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						0)));
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc = new GregorianCalendar(1972, Calendar.OCTOBER, 8, 2, 5, 0);
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc.roll(Calendar.DAY_OF_MONTH, 25);
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Failed to roll DAY_OF_MONTH up by 25", gc
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 2, 2, 5,
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						0)));
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc = new GregorianCalendar(1972, Calendar.OCTOBER, 8, 2, 5, 0);
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc.roll(Calendar.DAY_OF_MONTH, -10);
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Failed to roll DAY_OF_MONTH down by 10", gc
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 29, 2, 5,
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						0)));
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#roll(int, boolean)
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_rollIZ() {
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.GregorianCalendar.roll(int, boolean)
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER,
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				13, 19, 9, 59);
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc.roll(Calendar.DAY_OF_MONTH, false);
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Failed to roll day_of_month down", gc
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 12, 19,
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						9, 59)));
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc = new GregorianCalendar(1972, Calendar.OCTOBER, 13, 19, 9, 59);
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc.roll(Calendar.DAY_OF_MONTH, true);
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Failed to roll day_of_month up", gc
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 14, 19,
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						9, 59)));
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc = new GregorianCalendar(1972, Calendar.OCTOBER, 31, 19, 9, 59);
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc.roll(Calendar.DAY_OF_MONTH, true);
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Failed to roll day_of_month up", gc
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals(new GregorianCalendar(1972, Calendar.OCTOBER, 1, 19, 9,
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						59)));
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar cal = new GregorianCalendar();
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int result;
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cal.roll(Calendar.ZONE_OFFSET, true);
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			result = 0;
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			result = 1;
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("ZONE_OFFSET roll", 1, result);
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			cal.roll(Calendar.DST_OFFSET, true);
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			result = 0;
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			result = 1;
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("ZONE_OFFSET roll", 1, result);
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cal.set(2004, Calendar.DECEMBER, 31, 5, 0, 0);
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		cal.roll(Calendar.WEEK_OF_YEAR, true);
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong year: " + cal.getTime(), 2004, cal
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.YEAR));
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong month: " + cal.getTime(), Calendar.JANUARY, cal
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.MONTH));
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong date: " + cal.getTime(), 9, cal.get(Calendar.DATE));
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-4372
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.set(1994, 11, 30, 5, 0, 0);
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.setMinimalDaysInFirstWeek(4);
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.roll(Calendar.WEEK_OF_YEAR, true);
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong year: " + cal.getTime(), 1994, cal
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.YEAR));
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong month: " + cal.getTime(), Calendar.JANUARY, cal
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.MONTH));
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong date: " + cal.getTime(), 7, cal.get(Calendar.DATE));
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.roll(Calendar.WEEK_OF_YEAR, true);
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong year: " + cal.getTime(), 1994, cal
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.YEAR));
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong month: " + cal.getTime(), Calendar.JANUARY, cal
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.MONTH));
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong date: " + cal.getTime(), 14, cal.get(Calendar.DATE));
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.roll(Calendar.WEEK_OF_YEAR, false);
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong year: " + cal.getTime(), 1994, cal
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.YEAR));
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong month: " + cal.getTime(), Calendar.JANUARY, cal
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.MONTH));
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong date: " + cal.getTime(), 7, cal.get(Calendar.DATE));
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.roll(Calendar.WEEK_OF_YEAR, false);
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong year: " + cal.getTime(), 1994, cal
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.YEAR));
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong month: " + cal.getTime(), Calendar.DECEMBER, cal
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.MONTH));
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong date: " + cal.getTime(), 30, cal.get(Calendar.DATE));
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.roll(Calendar.WEEK_OF_YEAR, false);
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong year: " + cal.getTime(), 1994, cal
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.YEAR));
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong month: " + cal.getTime(), Calendar.DECEMBER, cal
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.MONTH));
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong date: " + cal.getTime(), 23, cal.get(Calendar.DATE));
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-4510
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.set(1999, Calendar.DECEMBER, 31, 23, 59, 59);
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.roll(GregorianCalendar.WEEK_OF_YEAR, true);
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong year: " + cal.getTime(), 1999, cal
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.YEAR));
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong month: " + cal.getTime(), Calendar.JANUARY, cal
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.MONTH));
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong date: " + cal.getTime(), 8, cal.get(Calendar.DATE));
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.roll(GregorianCalendar.WEEK_OF_YEAR, false);
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong year: " + cal.getTime(), 1999, cal
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.YEAR));
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong month: " + cal.getTime(), Calendar.DECEMBER, cal
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(Calendar.MONTH));
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong date: " + cal.getTime(), 31, cal.get(Calendar.DATE));
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.GregorianCalendar#setGregorianChange(java.util.Date)
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setGregorianChangeLjava_util_Date() {
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.GregorianCalendar.setGregorianChange(java.util.Date)
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc1 = new GregorianCalendar(1582, Calendar.OCTOBER,
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				4, 0, 0);
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		GregorianCalendar gc2 = new GregorianCalendar(1972, Calendar.OCTOBER,
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				13, 0, 0);
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		gc1.setGregorianChange(gc2.getTime());
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned incorrect value", gc2.getTime().equals(
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				gc1.getGregorianChange()));
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.GregorianCalendar#clone()
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_clone() {
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-498
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        GregorianCalendar gCalend = new GregorianCalendar();
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gCalend.set(Calendar.MILLISECOND, 0);
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int dayOfMonth = gCalend.get(Calendar.DAY_OF_MONTH);
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // create clone object and change date
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        GregorianCalendar gCalendClone = (GregorianCalendar) gCalend.clone();
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gCalendClone.add(Calendar.DATE, 1);
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Before", dayOfMonth, gCalend.get(Calendar.DAY_OF_MONTH));
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gCalend.set(Calendar.MILLISECOND, 0);//changes nothing
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("After", dayOfMonth, gCalend.get(Calendar.DAY_OF_MONTH));
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.GregorianCalendar#getMinimalDaysInFirstWeek()
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getMinimalDaysInFirstWeek() {
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for Harmony-1037
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Some non-bug differences below because of different CLDR data of Harmony
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        GregorianCalendar g = new GregorianCalendar(TimeZone
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getTimeZone("Europe/London"), new Locale("en", "GB"));
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int minimalDaysInFirstWeek = g.getMinimalDaysInFirstWeek();
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(4, minimalDaysInFirstWeek);
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        g = new GregorianCalendar(TimeZone.getTimeZone("Europe/London"),
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new Locale("fr"));
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        minimalDaysInFirstWeek = g.getMinimalDaysInFirstWeek();
686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(4, minimalDaysInFirstWeek);
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        g = new GregorianCalendar(TimeZone.getTimeZone("Europe/London"),
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new Locale("fr", "CA"));
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        minimalDaysInFirstWeek = g.getMinimalDaysInFirstWeek();
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(4, minimalDaysInFirstWeek);
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.GregorianCalendar#computeTime()
697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_computeTime() {
699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for Harmony-493
700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        GregorianCalendar g = new GregorianCalendar(
701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            TimeZone.getTimeZone("Europe/London"),
702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new Locale("en", "GB")
703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        );
704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        g.clear();
705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        g.set(2006, 02, 26, 01, 50, 00);
706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1143337800000L, g.getTimeInMillis());
707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        GregorianCalendar g1 = new GregorianCalendar(
709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            TimeZone.getTimeZone("Europe/Moscow")
710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        );
711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        g1.clear();
712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        g1.set(2006, 02, 26, 02, 20, 00); // in the DST transition interval
713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1143328800000L, g1.getTimeInMillis());
714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(3, g1.get(Calendar.HOUR_OF_DAY));
715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        g1.clear();
716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        g1.set(2006, 9, 29, 02, 50, 00); // transition from DST
717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1162079400000L, g1.getTimeInMillis());
718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, g1.get(Calendar.HOUR_OF_DAY));
719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // End of regression test
720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.GregorianCalendar#get(int)
724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getI() {
727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-2959
728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date = new Date(Date.parse("Jan 15 00:00:01 GMT 2000"));
729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.setGregorianChange(date);
731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.setTimeInMillis(Date.parse("Dec 24 00:00:01 GMT 2000"));
732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(346, gc.get(Calendar.DAY_OF_YEAR));
733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-3003
735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        date = new Date(Date.parse("Feb 28 00:00:01 GMT 2000"));
736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.setGregorianChange(date);
738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.setTimeInMillis(Date.parse("Dec 1 00:00:01 GMT 2000"));
739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, gc.get(Calendar.DAY_OF_MONTH));
740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(11, gc.get(Calendar.MONTH));
741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-4513
743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.set(1582, Calendar.OCTOBER, 15, 0, 0, 0);
745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // reset millisecond to zero in order to be the same time as cutover
746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.set(Calendar.MILLISECOND, 0);
747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, gc.get(Calendar.MILLISECOND));
748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1582, gc.get(Calendar.YEAR));
749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(Calendar.OCTOBER, gc.get(Calendar.MONTH));
750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(15, gc.get(Calendar.DAY_OF_MONTH));
751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, gc.get(Calendar.HOUR_OF_DAY));
752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, gc.get(Calendar.MINUTE));
753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, gc.get(Calendar.SECOND));
754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.set(1582, Calendar.OCTOBER, 14, 0, 0, 0);
755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(24, gc.get(Calendar.DAY_OF_MONTH));
756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-2422
758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.set(GregorianCalendar.ZONE_OFFSET, -1);
760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, gc.get(GregorianCalendar.ZONE_OFFSET));
761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.set(GregorianCalendar.ZONE_OFFSET, 1);
762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, gc.get(GregorianCalendar.ZONE_OFFSET));
763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        gc.set(GregorianCalendar.ZONE_OFFSET, 0);
764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, gc.get(GregorianCalendar.ZONE_OFFSET));
765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Sets up the fixture, for example, open a network connection. This method
769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * is called before a test is executed.
770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void setUp() {
772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Tears down the fixture, for example, close a network connection. This
776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * method is called after a test is executed.
777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void tearDown() {
779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
781