1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/*
2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Licensed to the Apache Software Foundation (ASF) under one or more
3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  contributor license agreements.  See the NOTICE file distributed with
4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  this work for additional information regarding copyright ownership.
5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  The ASF licenses this file to You under the Apache License, Version 2.0
6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  (the "License"); you may not use this file except in compliance with
7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  the License.  You may obtain a copy of the License at
8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *     http://www.apache.org/licenses/LICENSE-2.0
10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Unless required by applicable law or agreed to in writing, software
12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  distributed under the License is distributed on an "AS IS" BASIS,
13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  See the License for the specific language governing permissions and
15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  limitations under the License.
16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */
17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.util;
19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.BitSet;
21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Calendar;
22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Date;
23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.GregorianCalendar;
24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Locale;
25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.SimpleTimeZone;
26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.TimeZone;
27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Vector;
28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class GregorianCalendarTest extends junit.framework.TestCase {
30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private static final TimeZone AMERICA_CHICAGO = TimeZone.getTimeZone("America/Chicago");
32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private static final TimeZone AMERICA_NEW_YORK = TimeZone.getTimeZone("America/New_York");
33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3441a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller    private Locale defaultLocale;
3541a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller
3641a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller    @Override
3741a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller    public void setUp() throws Exception {
3841a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller        super.setUp();
3941a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller        defaultLocale = Locale.getDefault();
403819290afba2199d4ddf5da88e5b3717b59863f6Neil Fuller        // Most tests are locale independent, but locale does affect start-of-week.
413819290afba2199d4ddf5da88e5b3717b59863f6Neil Fuller        Locale.setDefault(Locale.US);
4241a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller    }
4341a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller
4441a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller    @Override
4541a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller    public void tearDown() throws Exception {
4641a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller        Locale.setDefault(defaultLocale);
4741a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller        super.tearDown();
4841a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller    }
4941a3d4230837b1987538578a10b365d7f0c9ca13Neil Fuller
50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#GregorianCalendar()
52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_Constructor() {
54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.GregorianCalendar()
55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Constructed incorrect calendar", (new GregorianCalendar()
56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .isLenient()));
57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#GregorianCalendar(int, int, int)
61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorIII() {
63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.GregorianCalendar(int, int, int)
64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER, 13);
65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed 1",
66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                1972, gc.get(Calendar.YEAR));
67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Incorrect calendar constructed 2",
68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                gc.get(Calendar.MONTH) == Calendar.OCTOBER);
69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed 3", 13, gc
70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.DAY_OF_MONTH));
71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Incorrect calendar constructed 4", gc.getTimeZone().equals(
72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                TimeZone.getDefault()));
73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#GregorianCalendar(int, int, int, int,
77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     *int)
78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorIIIII() {
80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.GregorianCalendar(int, int, int, int, int)
81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER,
82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                13, 19, 9);
83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed",
84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                1972, gc.get(Calendar.YEAR));
85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Incorrect calendar constructed",
86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                gc.get(Calendar.MONTH) == Calendar.OCTOBER);
87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed", 13, gc
88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.DAY_OF_MONTH));
89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed", 7, gc.get(Calendar.HOUR));
90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed",
91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                1, gc.get(Calendar.AM_PM));
92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed",
93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                9, gc.get(Calendar.MINUTE));
94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Incorrect calendar constructed", gc.getTimeZone().equals(
95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                TimeZone.getDefault()));
96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        //Regression for HARMONY-998
98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc = new GregorianCalendar(1900, 0, 0, 0, Integer.MAX_VALUE);
99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed",
100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                5983, gc.get(Calendar.YEAR));
101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#GregorianCalendar(int, int, int, int,
105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     *int, int)
106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorIIIIII() {
108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.GregorianCalendar(int, int, int, int, int,
109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // int)
110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER,
111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                13, 19, 9, 59);
112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed",
113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                1972, gc.get(Calendar.YEAR));
114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Incorrect calendar constructed",
115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                gc.get(Calendar.MONTH) == Calendar.OCTOBER);
116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed", 13, gc
117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.DAY_OF_MONTH));
118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed", 7, gc.get(Calendar.HOUR));
119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed",
120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                1, gc.get(Calendar.AM_PM));
121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed",
122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                9, gc.get(Calendar.MINUTE));
123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar constructed",
124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                59, gc.get(Calendar.SECOND));
125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Incorrect calendar constructed", gc.getTimeZone().equals(
126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                TimeZone.getDefault()));
127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#GregorianCalendar(java.util.Locale)
131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_util_Locale() {
133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.GregorianCalendar(java.util.Locale)
134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Date date = new Date();
135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gcJapan = new GregorianCalendar(Locale.JAPAN);
136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gcJapan.setTime(date);
137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gcJapan2 = new GregorianCalendar(Locale.JAPAN);
138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gcJapan2.setTime(date);
139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gcItaly = new GregorianCalendar(Locale.ITALY);
140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gcItaly.setTime(date);
141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Locales not created correctly", gcJapan.equals(gcJapan2)
142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                && !gcJapan.equals(gcItaly));
143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#GregorianCalendar(java.util.TimeZone)
147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_util_TimeZone() {
149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.GregorianCalendar(java.util.TimeZone)
150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Date date = new Date(2008, 1, 1);
151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TimeZone.getDefault();
152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc1 = new GregorianCalendar(AMERICA_NEW_YORK);
153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.setTime(date);
154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc2 = new GregorianCalendar(AMERICA_CHICAGO);
155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc2.setTime(date);
156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Chicago is 1 hour before New York, add 1 to the Chicago time and convert to 0-12 value
157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar returned",
158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                gc1.get(Calendar.HOUR), ((gc2.get(Calendar.HOUR) + 1) % 12));
159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-2961
161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SimpleTimeZone timezone = new SimpleTimeZone(-3600 * 24 * 1000 * 2,
162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "GMT");
163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar(timezone);
164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-5195
166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Calendar c1 = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        c1.set(Calendar.YEAR, 1999);
168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        c1.set(Calendar.MONTH, Calendar.JUNE);
169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        c1.set(Calendar.DAY_OF_MONTH, 2);
170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        c1.set(Calendar.HOUR, 15);
171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        c1.set(Calendar.MINUTE, 34);
172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        c1.set(Calendar.SECOND, 16);
173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(34, c1.get(Calendar.MINUTE));
174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        c1.setTimeZone(new SimpleTimeZone(60000, "ONE MINUTE"));
175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(35, c1.get(Calendar.MINUTE));
176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#GregorianCalendar(java.util.TimeZone,
180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     *java.util.Locale)
181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_util_TimeZoneLjava_util_Locale() {
183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.GregorianCalendar(java.util.TimeZone,
184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.util.Locale)
185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Date date = new Date(2008, 1, 1);
186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TimeZone.getDefault();
187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc1 = new GregorianCalendar(AMERICA_NEW_YORK, Locale.JAPAN);
188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.setTime(date);
189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc2 = new GregorianCalendar(AMERICA_NEW_YORK, Locale.JAPAN);
190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc2.setTime(date);
191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc3 = new GregorianCalendar(AMERICA_CHICAGO, Locale.ITALY);
192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc3.setTime(date);
193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Chicago is 1 hour before New York, add 1 to the Chicago time and convert to 0-12 value
194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect calendar returned",
195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                gc1.get(Calendar.HOUR), ((gc3.get(Calendar.HOUR) + 1) % 12));
196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Locales not created correctly", gc1.equals(gc2)
197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                && !gc1.equals(gc3));
198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#add(int, int)
202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_addII() {
204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method void java.util.GregorianCalendar.add(int, int)
205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc1 = new GregorianCalendar(1998, 11, 6);
206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(GregorianCalendar.YEAR, 1);
207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Add failed to Increment",
208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                1999, gc1.get(GregorianCalendar.YEAR));
209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1 = new GregorianCalendar(1999, Calendar.JULY, 31);
211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.MONTH, 7);
212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong result year 1", 2000, gc1.get(Calendar.YEAR));
213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong result month 1",
214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                gc1.get(Calendar.MONTH) == Calendar.FEBRUARY);
215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong result date 1", 29, gc1.get(Calendar.DATE));
216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.YEAR, -1);
218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong result year 2", 1999, gc1.get(Calendar.YEAR));
219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong result month 2",
220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                gc1.get(Calendar.MONTH) == Calendar.FEBRUARY);
221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong result date 2", 28, gc1.get(Calendar.DATE));
222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1 = new GregorianCalendar(AMERICA_NEW_YORK);
224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.MILLISECOND, 24 * 60 * 60 * 1000);
2261326a80ee854ad7df3ac183874734e418194572cNarayan Kamath        assertEquals("Wrong time after MILLISECOND change", 17, gc1
227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.SECOND, 24 * 60 * 60);
2301326a80ee854ad7df3ac183874734e418194572cNarayan Kamath        assertEquals("Wrong time after SECOND change", 17, gc1
231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.MINUTE, 24 * 60);
2341326a80ee854ad7df3ac183874734e418194572cNarayan Kamath        assertEquals("Wrong time after MINUTE change", 17, gc1
235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.HOUR, 24);
2381326a80ee854ad7df3ac183874734e418194572cNarayan Kamath        assertEquals("Wrong time after HOUR change", 17, gc1
239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.HOUR_OF_DAY, 24);
2421326a80ee854ad7df3ac183874734e418194572cNarayan Kamath        assertEquals("Wrong time after HOUR_OF_DAY change", 17, gc1
243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.AM_PM, 2);
247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong time after AM_PM change", 16, gc1
248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.DATE, 1);
251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong time after DATE change", 16, gc1
252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.DAY_OF_YEAR, 1);
255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong time after DAY_OF_YEAR change", 16, gc1
256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.DAY_OF_WEEK, 1);
259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong time after DAY_OF_WEEK change", 16, gc1
260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.WEEK_OF_YEAR, 1);
263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong time after WEEK_OF_YEAR change", 16, gc1
264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.WEEK_OF_MONTH, 1);
267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong time after WEEK_OF_MONTH change", 16, gc1
268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(1999, Calendar.APRIL, 3, 16, 0); // day before DST change
270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong time after DAY_OF_WEEK_IN_MONTH change", 16, gc1
272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.HOUR_OF_DAY));
273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.clear();
275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.set(2000, Calendar.APRIL, 1, 23, 0);
276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.add(Calendar.DATE, 1);
277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong time after DATE change near DST boundary", gc1
278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.MONTH) == Calendar.APRIL
279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                && gc1.get(Calendar.DATE) == 2
280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                && gc1.get(Calendar.HOUR_OF_DAY) == 23);
281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#equals(java.lang.Object)
285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_equalsLjava_lang_Object() {
287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method boolean
288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.util.GregorianCalendar.equals(java.lang.Object)
289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc1 = new GregorianCalendar(1998, 11, 6);
290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc2 = new GregorianCalendar(2000, 11, 6);
291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc3 = new GregorianCalendar(1998, 11, 6);
292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Equality check failed", gc1.equals(gc3));
293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Equality check failed", !gc1.equals(gc2));
294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc3.setGregorianChange(new Date());
295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Different gregorian change", !gc1.equals(gc3));
296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#getActualMaximum(int)
300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getActualMaximumI() {
302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method int java.util.GregorianCalendar.getActualMaximum(int)
303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc1 = new GregorianCalendar(1900, 1, 1);
304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc2 = new GregorianCalendar(1996, 1, 1);
305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc3 = new GregorianCalendar(1997, 1, 1);
306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc4 = new GregorianCalendar(2000, 1, 1);
307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc5 = new GregorianCalendar(2000, 9, 9);
308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc6 = new GregorianCalendar(2000, 3, 3);
309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 1900",
310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                28, gc1.getActualMaximum(Calendar.DAY_OF_MONTH));
311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 1996",
312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                29, gc2.getActualMaximum(Calendar.DAY_OF_MONTH));
313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 1998",
314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                28, gc3.getActualMaximum(Calendar.DAY_OF_MONTH));
315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Feb 2000",
316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                29, gc4.getActualMaximum(Calendar.DAY_OF_MONTH));
317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Oct 2000",
318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                31, gc5.getActualMaximum(Calendar.DAY_OF_MONTH));
319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual maximum value for DAY_OF_MONTH for Apr 2000",
320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                30, gc6.getActualMaximum(Calendar.DAY_OF_MONTH));
321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong actual maximum value for MONTH", gc1
322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getActualMaximum(Calendar.MONTH) == Calendar.DECEMBER);
323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual maximum value for HOUR_OF_DAY", 23, gc1
324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getActualMaximum(Calendar.HOUR_OF_DAY));
325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual maximum value for HOUR", 11, gc1
326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getActualMaximum(Calendar.HOUR));
327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual maximum value for DAY_OF_WEEK_IN_MONTH", 4, gc6
328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getActualMaximum(Calendar.DAY_OF_WEEK_IN_MONTH));
329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for harmony 2954
332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Date date = new Date(Date.parse("Jan 15 00:00:01 GMT 2000"));
333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar();
334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.setTimeInMillis(Date.parse("Dec 15 00:00:01 GMT 1582"));
335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(355, gc.getActualMaximum(Calendar.DAY_OF_YEAR));
336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.setGregorianChange(date);
337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.setTimeInMillis(Date.parse("Jan 16 00:00:01 GMT 2000"));
338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(353, gc.getActualMaximum(Calendar.DAY_OF_YEAR));
339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        //Regression test for HARMONY-3004
341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc = new GregorianCalendar(1900, 7, 1);
342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] ids = TimeZone.getAvailableIDs();
343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < ids.length; i++) {
344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            TimeZone tz = TimeZone.getTimeZone(ids[i]);
345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            gc.setTimeZone(tz);
346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int j = 1900; j < 2000; j++) {
347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                gc.set(Calendar.YEAR, j);
348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(7200000, gc.getActualMaximum(Calendar.DST_OFFSET));
349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#getActualMinimum(int)
355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getActualMinimumI() {
357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method int java.util.GregorianCalendar.getActualMinimum(int)
358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc1 = new GregorianCalendar(1900, 1, 1);
359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        new GregorianCalendar(1996, 1, 1);
360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        new GregorianCalendar(1997, 1, 1);
361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        new GregorianCalendar(2000, 1, 1);
362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        new GregorianCalendar(2000, 9, 9);
363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc6 = new GregorianCalendar(2000, 3, 3);
364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual minimum value for DAY_OF_MONTH for Feb 1900",
365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                1, gc1.getActualMinimum(Calendar.DAY_OF_MONTH));
366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong actual minimum value for MONTH", gc1
367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getActualMinimum(Calendar.MONTH) == Calendar.JANUARY);
368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual minimum value for HOUR_OF_DAY", 0, gc1
369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getActualMinimum(Calendar.HOUR_OF_DAY));
370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual minimum value for HOUR", 0, gc1
371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getActualMinimum(Calendar.HOUR));
372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong actual minimum value for DAY_OF_WEEK_IN_MONTH", 1, gc6
373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getActualMinimum(Calendar.DAY_OF_WEEK_IN_MONTH));
374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#getGreatestMinimum(int)
378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getGreatestMinimumI() {
380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method int
381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.util.GregorianCalendar.getGreatestMinimum(int)
382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar();
383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong greatest minimum value for DAY_OF_MONTH", 1, gc
384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getGreatestMinimum(Calendar.DAY_OF_MONTH));
385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong greatest minimum value for MONTH", gc
386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getGreatestMinimum(Calendar.MONTH) == Calendar.JANUARY);
387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong greatest minimum value for HOUR_OF_DAY", 0, gc
388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getGreatestMinimum(Calendar.HOUR_OF_DAY));
389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong greatest minimum value for HOUR", 0, gc
390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getGreatestMinimum(Calendar.HOUR));
391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BitSet result = new BitSet();
393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int[] min = { 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -46800000,
394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                0 };
395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < min.length; i++) {
396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (gc.getGreatestMinimum(i) != min[i])
397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                result.set(i);
398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong greatest min for " + result, result.length() == 0);
400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#getGregorianChange()
404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getGregorianChange() {
406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.Date
407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.util.GregorianCalendar.getGregorianChange()
408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar();
409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar returnedChange = new GregorianCalendar(AMERICA_NEW_YORK);
410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        returnedChange.setTime(gc.getGregorianChange());
411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Returned incorrect year",
412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                1582, returnedChange.get(Calendar.YEAR));
413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned incorrect month", returnedChange
414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.MONTH) == Calendar.OCTOBER);
415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Returned incorrect day of month", 4, returnedChange
416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.DAY_OF_MONTH));
417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#getLeastMaximum(int)
421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getLeastMaximumI() {
423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method int java.util.GregorianCalendar.getLeastMaximum(int)
424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar();
425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong least maximum value for DAY_OF_MONTH", 28, gc
426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getLeastMaximum(Calendar.DAY_OF_MONTH));
427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong least maximum value for MONTH", gc
428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getLeastMaximum(Calendar.MONTH) == Calendar.DECEMBER);
429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong least maximum value for HOUR_OF_DAY", 23, gc
430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getLeastMaximum(Calendar.HOUR_OF_DAY));
431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong least maximum value for HOUR", 11, gc
432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getLeastMaximum(Calendar.HOUR));
433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BitSet result = new BitSet();
435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Vector values = new Vector();
436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int[] max = { 1, 292269054, 11, 50, 3, 28, 355, 7, 3, 1, 11, 23, 59,
437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                59, 999, 50400000, 1200000 };
438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < max.length; i++) {
439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (gc.getLeastMaximum(i) != max[i]) {
440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                result.set(i);
441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                values.add(new Integer(gc.getLeastMaximum(i)));
442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong least max for " + result + " = " + values, result
445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .length() == 0);
446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#getMaximum(int)
450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getMaximumI() {
452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method int java.util.GregorianCalendar.getMaximum(int)
453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar();
454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong maximum value for DAY_OF_MONTH", 31, gc
455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getMaximum(Calendar.DAY_OF_MONTH));
456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong maximum value for MONTH", gc
457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getMaximum(Calendar.MONTH) == Calendar.DECEMBER);
458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong maximum value for HOUR_OF_DAY", 23, gc
459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getMaximum(Calendar.HOUR_OF_DAY));
460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong maximum value for HOUR",
461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                11, gc.getMaximum(Calendar.HOUR));
462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BitSet result = new BitSet();
464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Vector values = new Vector();
465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int[] max = { 1, 292278994, 11, 53, 6, 31, 366, 7, 6, 1, 11, 23, 59,
466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                59, 999, 50400000, 7200000 };
467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < max.length; i++) {
468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (gc.getMaximum(i) != max[i]) {
469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                result.set(i);
470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                values.add(new Integer(gc.getMaximum(i)));
471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong max for " + result + " = " + values,
474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                result.length() == 0);
475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#getMinimum(int)
479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getMinimumI() {
481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method int java.util.GregorianCalendar.getMinimum(int)
482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar();
483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong minimum value for DAY_OF_MONTH", 1, gc
484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getMinimum(Calendar.DAY_OF_MONTH));
485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong minimum value for MONTH", gc
486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getMinimum(Calendar.MONTH) == Calendar.JANUARY);
487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong minimum value for HOUR_OF_DAY", 0, gc
488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getMinimum(Calendar.HOUR_OF_DAY));
489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong minimum value for HOUR",
490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                0, gc.getMinimum(Calendar.HOUR));
491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BitSet result = new BitSet();
493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int[] min = { 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -46800000,
494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                0 };
495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < min.length; i++) {
496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (gc.getMinimum(i) != min[i])
497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                result.set(i);
498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong min for " + result, result.length() == 0);
500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#isLeapYear(int)
504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_isLeapYearI() {
506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method boolean java.util.GregorianCalendar.isLeapYear(int)
507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar(1998, 11, 6);
508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned incorrect value for leap year", !gc
509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .isLeapYear(1998));
510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned incorrect value for leap year", gc
511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .isLeapYear(2000));
512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#roll(int, int)
517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_rollII() {
519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method void java.util.GregorianCalendar.roll(int, int)
520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER, 8,
521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                2, 5, 0);
522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.roll(Calendar.DAY_OF_MONTH, -1);
523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed to roll DAY_OF_MONTH down by 1", gc
524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals(new GregorianCalendar(1972, Calendar.OCTOBER, 7, 2, 5,
525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        0)));
526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc = new GregorianCalendar(1972, Calendar.OCTOBER, 8, 2, 5, 0);
527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.roll(Calendar.DAY_OF_MONTH, 25);
528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed to roll DAY_OF_MONTH up by 25", gc
529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals(new GregorianCalendar(1972, Calendar.OCTOBER, 2, 2, 5,
530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        0)));
531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc = new GregorianCalendar(1972, Calendar.OCTOBER, 8, 2, 5, 0);
532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.roll(Calendar.DAY_OF_MONTH, -10);
533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed to roll DAY_OF_MONTH down by 10", gc
534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals(new GregorianCalendar(1972, Calendar.OCTOBER, 29, 2, 5,
535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        0)));
536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#roll(int, boolean)
540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_rollIZ() {
542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method void java.util.GregorianCalendar.roll(int, boolean)
543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar(1972, Calendar.OCTOBER,
544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                13, 19, 9, 59);
545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.roll(Calendar.DAY_OF_MONTH, false);
546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed to roll day_of_month down", gc
547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals(new GregorianCalendar(1972, Calendar.OCTOBER, 12, 19,
548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        9, 59)));
549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc = new GregorianCalendar(1972, Calendar.OCTOBER, 13, 19, 9, 59);
550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.roll(Calendar.DAY_OF_MONTH, true);
551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed to roll day_of_month up", gc
552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals(new GregorianCalendar(1972, Calendar.OCTOBER, 14, 19,
553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        9, 59)));
554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc = new GregorianCalendar(1972, Calendar.OCTOBER, 31, 19, 9, 59);
555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.roll(Calendar.DAY_OF_MONTH, true);
556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed to roll day_of_month up", gc
557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals(new GregorianCalendar(1972, Calendar.OCTOBER, 1, 19, 9,
558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        59)));
559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar cal = new GregorianCalendar();
561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int result;
562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            cal.roll(Calendar.ZONE_OFFSET, true);
564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            result = 0;
565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            result = 1;
567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("ZONE_OFFSET roll", 1, result);
569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            cal.roll(Calendar.DST_OFFSET, true);
571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            result = 0;
572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            result = 1;
574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("ZONE_OFFSET roll", 1, result);
576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.set(2004, Calendar.DECEMBER, 31, 5, 0, 0);
578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.roll(Calendar.WEEK_OF_YEAR, true);
579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong year: " + cal.getTime(), 2004, cal
580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.YEAR));
581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong month: " + cal.getTime(), Calendar.JANUARY, cal
582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.MONTH));
5835d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer        // Android-changed: Bugfix for https://bugs.openjdk.java.net/browse/JDK-6902861. This
584d7928577b0cc656c1c6da16bfe281541fdd435eeJoachim Sauer        // returned 9 before Android O.
585d7928577b0cc656c1c6da16bfe281541fdd435eeJoachim Sauer        assertEquals("Wrong date: " + cal.getTime(), 2, cal.get(Calendar.DATE));
586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-4372
588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.set(1994, 11, 30, 5, 0, 0);
589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.setMinimalDaysInFirstWeek(4);
590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.roll(Calendar.WEEK_OF_YEAR, true);
591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong year: " + cal.getTime(), 1994, cal
592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.YEAR));
593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong month: " + cal.getTime(), Calendar.JANUARY, cal
594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.MONTH));
595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong date: " + cal.getTime(), 7, cal.get(Calendar.DATE));
596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.roll(Calendar.WEEK_OF_YEAR, true);
598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong year: " + cal.getTime(), 1994, cal
599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.YEAR));
600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong month: " + cal.getTime(), Calendar.JANUARY, cal
601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.MONTH));
602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong date: " + cal.getTime(), 14, cal.get(Calendar.DATE));
603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.roll(Calendar.WEEK_OF_YEAR, false);
605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong year: " + cal.getTime(), 1994, cal
606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.YEAR));
607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong month: " + cal.getTime(), Calendar.JANUARY, cal
608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.MONTH));
609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong date: " + cal.getTime(), 7, cal.get(Calendar.DATE));
610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.roll(Calendar.WEEK_OF_YEAR, false);
612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong year: " + cal.getTime(), 1994, cal
613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.YEAR));
614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong month: " + cal.getTime(), Calendar.DECEMBER, cal
615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.MONTH));
616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong date: " + cal.getTime(), 30, cal.get(Calendar.DATE));
617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.roll(Calendar.WEEK_OF_YEAR, false);
619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong year: " + cal.getTime(), 1994, cal
620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.YEAR));
621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong month: " + cal.getTime(), Calendar.DECEMBER, cal
622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.MONTH));
623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong date: " + cal.getTime(), 23, cal.get(Calendar.DATE));
624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-4510
626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.set(1999, Calendar.DECEMBER, 31, 23, 59, 59);
627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.roll(GregorianCalendar.WEEK_OF_YEAR, true);
628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong year: " + cal.getTime(), 1999, cal
629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.YEAR));
630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong month: " + cal.getTime(), Calendar.JANUARY, cal
631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.MONTH));
632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong date: " + cal.getTime(), 8, cal.get(Calendar.DATE));
633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        cal.roll(GregorianCalendar.WEEK_OF_YEAR, false);
634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong year: " + cal.getTime(), 1999, cal
635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.YEAR));
636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong month: " + cal.getTime(), Calendar.DECEMBER, cal
637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(Calendar.MONTH));
638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong date: " + cal.getTime(), 31, cal.get(Calendar.DATE));
639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#setGregorianChange(java.util.Date)
643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_setGregorianChangeLjava_util_Date() {
645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method void
646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.util.GregorianCalendar.setGregorianChange(java.util.Date)
647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc1 = new GregorianCalendar(1582, Calendar.OCTOBER,
648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                4, 0, 0);
649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc2 = new GregorianCalendar(1972, Calendar.OCTOBER,
650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                13, 0, 0);
651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc1.setGregorianChange(gc2.getTime());
652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned incorrect value", gc2.getTime().equals(
653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                gc1.getGregorianChange()));
654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#clone()
658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_clone() {
660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-498
662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gCalend = new GregorianCalendar();
663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gCalend.set(Calendar.MILLISECOND, 0);
665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int dayOfMonth = gCalend.get(Calendar.DAY_OF_MONTH);
666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // create clone object and change date
668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gCalendClone = (GregorianCalendar) gCalend.clone();
669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gCalendClone.add(Calendar.DATE, 1);
670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Before", dayOfMonth, gCalend.get(Calendar.DAY_OF_MONTH));
672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gCalend.set(Calendar.MILLISECOND, 0);//changes nothing
673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("After", dayOfMonth, gCalend.get(Calendar.DAY_OF_MONTH));
674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#getMinimalDaysInFirstWeek()
678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getMinimalDaysInFirstWeek() {
680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for Harmony-1037
681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Some non-bug differences below because of different CLDR data of Harmony
682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar g = new GregorianCalendar(TimeZone
683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getTimeZone("Europe/London"), new Locale("en", "GB"));
684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int minimalDaysInFirstWeek = g.getMinimalDaysInFirstWeek();
685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(4, minimalDaysInFirstWeek);
686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        g = new GregorianCalendar(TimeZone.getTimeZone("Europe/London"),
688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Locale("fr"));
689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        minimalDaysInFirstWeek = g.getMinimalDaysInFirstWeek();
690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(4, minimalDaysInFirstWeek);
691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        g = new GregorianCalendar(TimeZone.getTimeZone("Europe/London"),
693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Locale("fr", "CA"));
694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        minimalDaysInFirstWeek = g.getMinimalDaysInFirstWeek();
695ce54057889055ab8c4cb45c51df0ca9ee09ebb43Narayan Kamath        assertEquals(1, minimalDaysInFirstWeek);
696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#computeTime()
701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_computeTime() {
703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for Harmony-493
704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar g = new GregorianCalendar(
705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                TimeZone.getTimeZone("Europe/London"),
706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Locale("en", "GB")
707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        );
708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        g.clear();
7093f2128b3408255e317f66c10c6dd5edbff53b3eeNarayan Kamath        g.set(2006, Calendar.MARCH, 26, 01, 50, 00);
710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1143337800000L, g.getTimeInMillis());
711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar g1 = new GregorianCalendar(
7133f2128b3408255e317f66c10c6dd5edbff53b3eeNarayan Kamath                TimeZone.getTimeZone("Europe/Moscow"));
714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        g1.clear();
7153f2128b3408255e317f66c10c6dd5edbff53b3eeNarayan Kamath        g1.set(2006, Calendar.MARCH, 26, 02, 20, 00);
716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1143328800000L, g1.getTimeInMillis());
717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, g1.get(Calendar.HOUR_OF_DAY));
7183f2128b3408255e317f66c10c6dd5edbff53b3eeNarayan Kamath        assertEquals(20, g1.get(Calendar.MINUTE));
7193f2128b3408255e317f66c10c6dd5edbff53b3eeNarayan Kamath
720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        g1.clear();
7213f2128b3408255e317f66c10c6dd5edbff53b3eeNarayan Kamath        g1.set(2006, Calendar.OCTOBER, 29, 02, 50, 00);
722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1162079400000L, g1.getTimeInMillis());
723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, g1.get(Calendar.HOUR_OF_DAY));
7243f2128b3408255e317f66c10c6dd5edbff53b3eeNarayan Kamath        assertEquals(50, g1.get(Calendar.MINUTE));
725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // End of regression test
726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.GregorianCalendar#get(int)
730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    @SuppressWarnings("deprecation")
732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getI() {
733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-2959
734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Date date = new Date(Date.parse("Jan 15 00:00:01 GMT 2000"));
735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.setGregorianChange(date);
737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.setTimeInMillis(Date.parse("Dec 24 00:00:01 GMT 2000"));
738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(346, gc.get(Calendar.DAY_OF_YEAR));
739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-3003
741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        date = new Date(Date.parse("Feb 28 00:00:01 GMT 2000"));
742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.setGregorianChange(date);
744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.setTimeInMillis(Date.parse("Dec 1 00:00:01 GMT 2000"));
745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, gc.get(Calendar.DAY_OF_MONTH));
746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(11, gc.get(Calendar.MONTH));
747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-4513
749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.set(1582, Calendar.OCTOBER, 15, 0, 0, 0);
751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // reset millisecond to zero in order to be the same time as cutover
752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.set(Calendar.MILLISECOND, 0);
753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, gc.get(Calendar.MILLISECOND));
754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1582, gc.get(Calendar.YEAR));
755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(Calendar.OCTOBER, gc.get(Calendar.MONTH));
756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(15, gc.get(Calendar.DAY_OF_MONTH));
757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, gc.get(Calendar.HOUR_OF_DAY));
758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, gc.get(Calendar.MINUTE));
759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, gc.get(Calendar.SECOND));
760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        gc.set(1582, Calendar.OCTOBER, 14, 0, 0, 0);
761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(24, gc.get(Calendar.DAY_OF_MONTH));
762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath}
764