001: /*
002: * Copyright 2001-2005 Stephen Colebourne
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.joda.time.tz;
017:
018: import java.util.Date;
019: import java.util.TimeZone;
020:
021: import junit.framework.TestCase;
022: import junit.framework.TestSuite;
023:
024: import org.joda.time.DateTimeZone;
025:
026: /**
027: * Test cases for FixedDateTimeZone.
028: *
029: * @author Stephen Colebourne
030: */
031: public class TestFixedDateTimeZone extends TestCase {
032:
033: public static void main(String[] args) {
034: junit.textui.TestRunner.run(suite());
035: }
036:
037: public static TestSuite suite() {
038: return new TestSuite(TestFixedDateTimeZone.class);
039: }
040:
041: private DateTimeZone originalDateTimeZone = null;
042:
043: public TestFixedDateTimeZone(String name) {
044: super (name);
045: }
046:
047: protected void setUp() throws Exception {
048: originalDateTimeZone = DateTimeZone.getDefault();
049: DateTimeZone.setDefault(DateTimeZone.UTC);
050: }
051:
052: protected void tearDown() throws Exception {
053: DateTimeZone.setDefault(originalDateTimeZone);
054: }
055:
056: public void testEquals() throws Exception {
057: FixedDateTimeZone zone1 = new FixedDateTimeZone("A", "B", 1, 5);
058: FixedDateTimeZone zone1b = new FixedDateTimeZone("A", "B", 1, 5);
059: FixedDateTimeZone zone2 = new FixedDateTimeZone("A", "C", 1, 5);
060: FixedDateTimeZone zone3 = new FixedDateTimeZone("A", "B", 2, 5);
061: FixedDateTimeZone zone4 = new FixedDateTimeZone("A", "B", 1, 6);
062:
063: assertEquals(true, zone1.equals(zone1));
064: assertEquals(true, zone1.equals(zone1b));
065: assertEquals(true, zone1.equals(zone2)); // second arg ignored
066: assertEquals(false, zone1.equals(zone3));
067: assertEquals(false, zone1.equals(zone4));
068: }
069:
070: public void testHashCode() throws Exception {
071: FixedDateTimeZone zone1 = new FixedDateTimeZone("A", "B", 1, 5);
072: FixedDateTimeZone zone1b = new FixedDateTimeZone("A", "B", 1, 5);
073: FixedDateTimeZone zone2 = new FixedDateTimeZone("A", "C", 1, 5);
074: FixedDateTimeZone zone3 = new FixedDateTimeZone("A", "B", 2, 5);
075: FixedDateTimeZone zone4 = new FixedDateTimeZone("A", "B", 1, 6);
076:
077: assertEquals(true, zone1.hashCode() == zone1.hashCode());
078: assertEquals(true, zone1.hashCode() == zone1b.hashCode());
079: assertEquals(true, zone1.hashCode() == zone2.hashCode()); // second arg ignored
080: assertEquals(false, zone1.hashCode() == zone3.hashCode());
081: assertEquals(false, zone1.hashCode() == zone4.hashCode());
082: }
083:
084: public void testToTimeZone1() throws Exception {
085: FixedDateTimeZone zone = new FixedDateTimeZone("+00:01",
086: "+00:01", 60000, 60000);
087: java.util.TimeZone tz = zone.toTimeZone();
088:
089: assertEquals(60000, tz.getRawOffset());
090: assertEquals(60000, getOffset(tz, 1167638400000L));
091: assertEquals(60000, getOffset(tz, 1185951600000L));
092: }
093:
094: public void testToTimeZone2() throws Exception {
095: FixedDateTimeZone zone = new FixedDateTimeZone("A", "B", 1, 5);
096: java.util.TimeZone tz = zone.toTimeZone();
097:
098: assertEquals(1, tz.getRawOffset());
099: assertEquals(1, getOffset(tz, 1167638400000L));
100: assertEquals(1, getOffset(tz, 1185951600000L));
101: }
102:
103: /** Make test compile on JDK 1.3. */
104: private int getOffset(TimeZone zone, long millis) {
105: Date date = new Date(millis);
106: if (zone.inDaylightTime(date)) {
107: return zone.getRawOffset() + 3600000;
108: }
109: return zone.getRawOffset();
110: }
111:
112: }
|