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.sql.tests.java.sql;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.sql.Timestamp;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Date;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TimeZone;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * JUnit Testcase for the java.sql.Timestamp class
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class TimestampTest extends TestCase {
338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    static class MockTimestamp extends Timestamp {
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        private String holiday;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public MockTimestamp(long theTime) {
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            super(theTime);
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            holiday = "Christmas";
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Constructor should not call this public API,
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // since it may be overrided to use variables uninitialized.
448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        public void setTime(long theTime) {
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            super.setTime(theTime);
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            holiday.hashCode();
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static long TIME_TEST1 = 38720231; // 10:45:20.231 GMT
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static long TIME_TEST2 = 80279000; // 22:17:59.000 GMT
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static long TIME_TEST3 = -38720691; // 13:14:39.309 GMT
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static long TIME_COMPARE = 123498845;
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static long TIME_EARLY = -2347889122L;// A time well before the Epoch
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static long TIME_LATE = 2347889122L; // A time well after the Epoch
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String STRING_TEST1 = "1970-01-01 10:45:20.231"; // "1970-01-01
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // 10:45:20.231000000";
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String STRING_TEST2 = "1970-01-01 22:17:59.0"; // "1970-01-01
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // 22:17:59.000000000";
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String STRING_TEST3 = "1969-12-31 13:14:39.309"; // "1969-12-31
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // 13:14:39.309000000";
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String STRING_INVALID1 = "ABCDEFGHI";
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String STRING_INVALID2 = "233104";
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String STRING_INVALID3 = "21-43-48";
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // A timepoint in the correct format but with numeric values out of range
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // ...this is accepted despite being a crazy date specification
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // ...it is treated as the correct format date 3000-06-08 12:40:06.875 !!
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String STRING_OUTRANGE = "2999-15-99 35:99:66.875";
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static long[] TIME_ARRAY = { TIME_TEST1, TIME_TEST2, TIME_TEST3 };
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static int[] YEAR_ARRAY = { 70, 70, 69 };
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static int[] MONTH_ARRAY = { 0, 0, 11 };
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static int[] DATE_ARRAY = { 1, 1, 31 };
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static int[] HOURS_ARRAY = { 10, 22, 13 };
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static int[] MINUTES_ARRAY = { 45, 17, 14 };
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static int[] SECONDS_ARRAY = { 20, 59, 39 };
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static int[] NANOS_ARRAY = { 231000000, 000000000, 309000000 };
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static int[] NANOS_ARRAY2 = { 137891990, 635665198, 109985421 };
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String[] STRING_NANOS_ARRAY = { "1970-01-01 10:45:20.13789199",
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            "1970-01-01 22:17:59.635665198", "1969-12-31 13:14:39.109985421" };
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String[] STRING_GMT_ARRAY = { STRING_TEST1, STRING_TEST2,
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            STRING_TEST3 };
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String[] STRING_LA_ARRAY = { "02:45:20", "14:17:59", "05:14:40" };
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String[] STRING_JP_ARRAY = { "19:45:20", "07:17:59", "22:14:40" };
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String[] INVALID_STRINGS = { STRING_INVALID1, STRING_INVALID2,
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            STRING_INVALID3 };
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // Timezones
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String TZ_LONDON = "GMT"; // GMT (!) PS London != GMT (?!?)
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String TZ_PACIFIC = "America/Los_Angeles"; // GMT - 8
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String TZ_JAPAN = "Asia/Tokyo"; // GMT + 9
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String[] TIMEZONES = { TZ_LONDON, TZ_PACIFIC, TZ_JAPAN };
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String[][] STRING_ARRAYS = { STRING_GMT_ARRAY, STRING_LA_ARRAY,
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            STRING_JP_ARRAY };
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // Test ToString
1298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    static String[][] STRING_TIMESTAMP_ARRAYS = {
1308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            STRING_GMT_ARRAY,
1318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            new String[] { "1970-01-01 02:45:20.231", "1970-01-01 14:17:59.0",
1328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                    "1969-12-31 05:14:39.309" },
1338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            new String[] { "1970-01-01 19:45:20.231", "1970-01-02 07:17:59.0", "1969-12-31 22:14:39.309" } };
1348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
1368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    * Constructor test
1378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    */
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testTimestamplong() {
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp theTimestamp = new Timestamp(TIME_TEST1);
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // The Timestamp should have been created
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(theTimestamp);
1428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp mockTimestamp = new MockTimestamp(TIME_TEST1);
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(theTimestamp);
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testTimestamplong
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Constructor test
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testTimestampintintintintintintint() {
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int[][] valid = { { 99, 2, 14, 17, 52, 3, 213577212 }, // 0 valid
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 0, 0, 1, 0, 0, 0, 0 }, // 1 valid
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 11, 31, 23, 59, 59, 999999999 }, // 2 valid
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 11, 31, 23, 59, 61, 999999999 }, // 5 Seconds out of
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // range
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 11, 31, 23, 59, -1, 999999999 }, // 6 Seconds out of
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // range
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 11, 31, 23, 61, 59, 999999999 }, // 7 Minutes out of
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // range
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 11, 31, 23, -1, 59, 999999999 }, // 8 Minutes out of
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // range
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 11, 31, 25, 59, 59, 999999999 }, // 9 Hours out of range
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 11, 31, -1, 59, 59, 999999999 }, // 10 Hours out of range
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 11, 35, 23, 59, 59, 999999999 }, // 11 Days out of range
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 11, -1, 23, 59, 59, 999999999 }, // 12 Days out of range
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 15, 31, 23, 59, 59, 999999999 }, // 13 Months out of
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // range
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, -1, 31, 23, 59, 59, 999999999 }, // 14 Months out of
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // range
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { -10, 11, 31, 23, 59, 59, 999999999 }, // 15 valid - Years
1728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                // negative
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int[] element : valid) {
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element[0], element[1],
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    element[2], element[3], element[4], element[5], element[6]);
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull("Timestamp not generated: ", theTimestamp);
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int[][] invalid = { { 106, 11, 31, 23, 59, 59, 1999999999 },
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                { 106, 11, 31, 23, 59, 59, -999999999 }, };
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int[] element : invalid) {
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new Timestamp(element[0], element[1], element[2], element[3],
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        element[4], element[5], element[6]);
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Should throw IllegalArgumentException");
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // expected
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testTimestampintintintintintintint
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for setTime
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSetTimelong() {
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // First set the timezone to GMT
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp theTimestamp = new Timestamp(TIME_TEST1);
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            theTimestamp.setTime(TIME_ARRAY[i]);
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(TIME_ARRAY[i], theTimestamp.getTime());
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(NANOS_ARRAY[i], theTimestamp.getNanos());
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testsetTimelong
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for getTime
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetTime() {
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // First set the timezone to GMT
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(element, theTimestamp.getTime());
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testgetTime
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for getYear
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetYear() {
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(TIME_ARRAY[i]);
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(YEAR_ARRAY[i], theTimestamp.getYear());
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testgetYear
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for getMonth
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetMonth() {
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(TIME_ARRAY[i]);
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(MONTH_ARRAY[i], theTimestamp.getMonth());
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testgetMonth
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for getDate
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetDate() {
2568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(TIME_ARRAY[i]);
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(DATE_ARRAY[i], theTimestamp.getDate());
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testgetDate
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for getHours
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetHours() {
2698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(TIME_ARRAY[i]);
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(HOURS_ARRAY[i], theTimestamp.getHours());
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testgetHours
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for getMinutes
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetMinutes() {
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(TIME_ARRAY[i]);
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(MINUTES_ARRAY[i], theTimestamp.getMinutes());
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testgetMinutes
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for getSeconds
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetSeconds() {
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(TIME_ARRAY[i]);
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(SECONDS_ARRAY[i], theTimestamp.getSeconds());
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testgetSeconds
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for valueOf
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String theExceptionMessage = "Timestamp format must be yyyy-mm-dd hh:mm:ss.fffffffff";
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testValueOfString() {
3098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(TIME_ARRAY[i]);
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp2 = Timestamp.valueOf(STRING_GMT_ARRAY[i]);
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(theTimestamp, theTimestamp2);
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for a string in correct format but with number values out of
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // range
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp theTimestamp = Timestamp.valueOf(STRING_OUTRANGE);
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(theTimestamp);
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /*
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * System.out.println("testValueOfString: outrange timestamp: " +
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * theTimestamp.toString() );
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (String element : INVALID_STRINGS) {
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Timestamp.valueOf(element);
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Should throw IllegalArgumentException.");
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // expected
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } // end try
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testvalueOfString
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for valueOf
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testValueOfString1() {
3418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
3428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp theReturn;
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long[] theReturnTime = { 38720231, 38720231, 80279000, -38720691,
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                38720000 };
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int[] theReturnNanos = { 231000000, 231987654, 0, 309000000, 0, };
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] valid = { "1970-01-01 10:45:20.231",
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1970-01-01 10:45:20.231987654", "1970-01-01 22:17:59.0",
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1969-12-31 13:14:39.309", "1970-01-01 10:45:20", };
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] invalid = { null, "ABCDEFGHI", "233104",
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1970-01-01 22:17:59.",
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1970-01-01 10:45:20.231987654690645322",
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1970-01-01 10:45:20&231987654",
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1970-01-01 10:45:20.-31987654",
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1970-01-01 10:45:20.ABCD87654", "21-43-48", };
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < valid.length; i++) {
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            theReturn = Timestamp.valueOf(valid[i]);
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(theReturnTime[i], theReturn.getTime());
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(theReturnNanos[i], theReturn.getNanos());
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (String element : invalid) {
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                theReturn = Timestamp.valueOf(element);
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Should throw IllegalArgumentException.");
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // expected
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-5506
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String date = "1970-01-01 22:17:59.0                 ";
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp t = Timestamp.valueOf(date);
3768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertEquals(80279000, t.getTime());
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testValueOfString
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testValueOf_IAE() {
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            java.sql.Timestamp.valueOf("2008-12-22 15:00:01.");
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // bug of RI 5, passed on RI 6
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            java.sql.Timestamp.valueOf("178548938-12-22 15:00:01.000000001");
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            java.sql.Timestamp.valueOf("2008-12-22 15:00:01.0000000011");
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for toString
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testToString() {
4088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        for (int i = 0; i < TIME_ARRAY.length; i++) {
4098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            testToString(TIMEZONES[i], TIME_ARRAY, STRING_TIMESTAMP_ARRAYS[i]);
4108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        } // end for
4118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
4128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Timestamp t1 = new Timestamp(Long.MIN_VALUE);
4158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertEquals("292278994-08-17 07:12:55.192", t1.toString()); //$NON-NLS-1$
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Timestamp t2 = new Timestamp(Long.MIN_VALUE + 1);
4188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertEquals("292278994-08-17 07:12:55.193", t2.toString()); //$NON-NLS-1$
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Timestamp t3 = new Timestamp(Long.MIN_VALUE + 807);
4218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertEquals("292278994-08-17 07:12:55.999", t3.toString()); //$NON-NLS-1$
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Timestamp t4 = new Timestamp(Long.MIN_VALUE + 808);
4248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertEquals("292269055-12-02 16:47:05.0", t4.toString()); //$NON-NLS-1$
4258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    } // end method testtoString
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private void testToString(String timeZone, long[] theTimeStamps, String[] theTimeStampStrings) {
4288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        TimeZone.setDefault(TimeZone.getTimeZone(timeZone));
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(theTimeStamps[i]);
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(theTimeStampStrings[i], theTimestamp.toString());
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
4338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
4358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
4378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    * Method test for getNanos
4388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    */
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetNanos() {
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(TIME_ARRAY[i]);
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(NANOS_ARRAY[i], theTimestamp.getNanos());
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testgetNanos
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for setNanos
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSetNanosint() {
4518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
4528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int[] NANOS_INVALID = { -137891990, 1635665198, -1 };
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < TIME_ARRAY.length; i++) {
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(TIME_ARRAY[i]);
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            theTimestamp.setNanos(NANOS_ARRAY2[i]);
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(NANOS_ARRAY2[i], theTimestamp.getNanos());
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Also check that these Timestamps with detailed nanos values
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // convert to
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // strings correctly
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(STRING_NANOS_ARRAY[i], theTimestamp.toString());
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < NANOS_INVALID.length; i++) {
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(TIME_ARRAY[i]);
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int originalNanos = theTimestamp.getNanos();
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                theTimestamp.setNanos(NANOS_INVALID[i]);
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Should throw IllegalArgumentException");
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // expected
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } // end try
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(originalNanos, theTimestamp.getNanos());
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testsetNanosint
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for equals
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testEqualsTimestamp() {
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp2 = new Timestamp(element);
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(theTimestamp.equals(theTimestamp2));
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp theTest = new Timestamp(TIME_COMPARE);
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(theTimestamp.equals(theTest));
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-526
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(new Timestamp(0).equals((Timestamp) null));
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testequalsTimestamp
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for equals
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testEqualsObject() {
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object theTimestamp2 = new Timestamp(element);
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(theTimestamp.equals(theTimestamp2));
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Object theTest = new Timestamp(TIME_COMPARE);
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(theTimestamp.equals(theTest));
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Object nastyTest = new String("Test ");
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp theTimestamp = new Timestamp(TIME_ARRAY[1]);
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(theTimestamp.equals(nastyTest));
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-526
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(new Timestamp(0).equals((Object) null));
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testequalsObject
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for before
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testBeforeTimestamp() {
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp theTest = new Timestamp(TIME_LATE);
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(theTimestamp.before(theTest));
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        theTest = new Timestamp(TIME_EARLY);
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(theTimestamp.before(theTest));
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            theTest = new Timestamp(element);
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(theTimestamp.before(theTest));
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            theTest.setNanos(theTest.getNanos() + 1);
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(theTimestamp.before(theTest));
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testbeforeTimestamp
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for after
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testAfterTimestamp() {
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp theTest = new Timestamp(TIME_LATE);
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(theTimestamp.after(theTest));
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        theTest = new Timestamp(TIME_EARLY);
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(theTimestamp.after(theTest));
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            theTest = new Timestamp(element);
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(theTimestamp.after(theTest));
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            theTimestamp.setNanos(theTimestamp.getNanos() + 1);
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(theTimestamp.after(theTest));
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testafterTimestamp
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Method test for compareTo
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testCompareToTimestamp() {
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp theTest = new Timestamp(TIME_EARLY);
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp theTest2 = new Timestamp(TIME_LATE);
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp2 = new Timestamp(element);
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(theTimestamp.compareTo(theTest) > 0);
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(theTimestamp.compareTo(theTest2) < 0);
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, theTimestamp.compareTo(theTimestamp2));
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp t1 = new Timestamp(-1L);
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp t2 = new Timestamp(-1L);
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        t1.setTime(Long.MIN_VALUE);
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        t2.setDate(Integer.MIN_VALUE);
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, t1.compareTo(t2));
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, t2.compareTo(t1));
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        t1.setTime(Long.MAX_VALUE);
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        t2.setTime(Long.MAX_VALUE - 1);
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, t1.compareTo(t2));
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, t2.compareTo(t1));
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        t1.setTime(Integer.MAX_VALUE);
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        t2.setTime(Integer.MAX_VALUE);
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, t1.compareTo(t2));
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, t2.compareTo(t1));
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testcompareToTimestamp
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.sql.Timestamp#compareTo(java.util.Date)
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testCompareToDate() {
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date theTest = new Timestamp(TIME_EARLY);
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date theTest2 = new Timestamp(TIME_LATE);
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (long element : TIME_ARRAY) {
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Timestamp theTimestamp = new Timestamp(element);
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Date theTimestamp2 = new Timestamp(element);
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(theTimestamp.compareTo(theTest) > 0);
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(theTimestamp.compareTo(theTest2) < 0);
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, theTimestamp.compareTo(theTimestamp2));
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } // end for
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp timestamp = new Timestamp(1000000);
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date = new Date(1000000);
6488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, timestamp.compareTo(date));
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        timestamp.setNanos(10);
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, timestamp.compareTo(date));
6528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long time = System.currentTimeMillis();
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date2 = new Date(time);
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp timestamp2 = new Timestamp(date2.getTime());
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, timestamp2.compareTo(date2));
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    } // end method testcompareToObject
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serialization/deserialization compatibility.
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSerializationSelf() throws Exception {
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp object = new Timestamp(100L);
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SerializationTest.verifySelf(object);
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serialization/deserialization compatibility with RI.
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSerializationCompatibility() throws Exception {
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Timestamp object = new Timestamp(100L);
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SerializationTest.verifyGolden(this, object);
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // Reset defualt timezone
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    TimeZone defaultTimeZone = TimeZone.getDefault();
6778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
6788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    protected void tearDown() {
6798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        TimeZone.setDefault(defaultTimeZone);
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests overriding Timestamp to create an immutable class.
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testOverridingTimestamp() {
6868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Timestamp ts = new Timestamp(8392418) {
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            @Override
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public void setNanos(int n) {
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                throw new RuntimeException("Overridden method shouldn't be called");
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} // end class TimestampTest
694