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; 017 018 import java.util.Locale; 019 import java.util.TimeZone; 020 021 import junit.framework.TestCase; 022 import junit.framework.TestSuite; 023 024 /** 025 * This class is a JUnit test for Duration. 026 * 027 * @author Stephen Colebourne 028 */ 029 public class TestDuration_Constructors extends TestCase { 030 // Test in 2002/03 as time zones are more well known 031 // (before the late 90's they were all over the place) 032 033 private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris"); 034 private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London"); 035 036 long y2002days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 037 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 038 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 039 366 + 365; 040 long y2003days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 041 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 042 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 043 366 + 365 + 365; 044 045 // 2002-06-09 046 private long TEST_TIME_NOW = 047 (y2002days + 31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY; 048 049 // 2002-04-05 050 private long TEST_TIME1 = 051 (y2002days + 31L + 28L + 31L + 5L -1L) * DateTimeConstants.MILLIS_PER_DAY 052 + 12L * DateTimeConstants.MILLIS_PER_HOUR 053 + 24L * DateTimeConstants.MILLIS_PER_MINUTE; 054 055 // 2003-05-06 056 private long TEST_TIME2 = 057 (y2003days + 31L + 28L + 31L + 30L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY 058 + 14L * DateTimeConstants.MILLIS_PER_HOUR 059 + 28L * DateTimeConstants.MILLIS_PER_MINUTE; 060 061 private DateTimeZone originalDateTimeZone = null; 062 private TimeZone originalTimeZone = null; 063 private Locale originalLocale = null; 064 065 public static void main(String[] args) { 066 junit.textui.TestRunner.run(suite()); 067 } 068 069 public static TestSuite suite() { 070 return new TestSuite(TestDuration_Constructors.class); 071 } 072 073 public TestDuration_Constructors(String name) { 074 super(name); 075 } 076 077 protected void setUp() throws Exception { 078 DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW); 079 originalDateTimeZone = DateTimeZone.getDefault(); 080 originalTimeZone = TimeZone.getDefault(); 081 originalLocale = Locale.getDefault(); 082 DateTimeZone.setDefault(LONDON); 083 TimeZone.setDefault(TimeZone.getTimeZone("Europe/London")); 084 Locale.setDefault(Locale.UK); 085 } 086 087 protected void tearDown() throws Exception { 088 DateTimeUtils.setCurrentMillisSystem(); 089 DateTimeZone.setDefault(originalDateTimeZone); 090 TimeZone.setDefault(originalTimeZone); 091 Locale.setDefault(originalLocale); 092 originalDateTimeZone = null; 093 originalTimeZone = null; 094 originalLocale = null; 095 } 096 097 //----------------------------------------------------------------------- 098 /** 099 * Test constructor () 100 */ 101 public void testZERO() throws Throwable { 102 Duration test = Duration.ZERO; 103 assertEquals(0, test.getMillis()); 104 } 105 106 //----------------------------------------------------------------------- 107 public void testParse_noFormatter() throws Throwable { 108 assertEquals(new Duration(3200), Duration.parse("PT3.2S")); 109 assertEquals(new Duration(6000), Duration.parse("PT6S")); 110 } 111 112 //----------------------------------------------------------------------- 113 public void testFactory_standardDays_long() throws Throwable { 114 Duration test = Duration.standardDays(1); 115 assertEquals(24L * 60L * 60L * 1000L, test.getMillis()); 116 117 test = Duration.standardDays(2); 118 assertEquals(2L * 24L * 60L * 60L * 1000L, test.getMillis()); 119 120 test = Duration.standardDays(0); 121 assertSame(Duration.ZERO, test); 122 } 123 124 //----------------------------------------------------------------------- 125 public void testFactory_standardHours_long() throws Throwable { 126 Duration test = Duration.standardHours(1); 127 assertEquals(60L * 60L * 1000L, test.getMillis()); 128 129 test = Duration.standardHours(2); 130 assertEquals(2L * 60L * 60L * 1000L, test.getMillis()); 131 132 test = Duration.standardHours(0); 133 assertSame(Duration.ZERO, test); 134 } 135 136 //----------------------------------------------------------------------- 137 public void testFactory_standardMinutes_long() throws Throwable { 138 Duration test = Duration.standardMinutes(1); 139 assertEquals(60L * 1000L, test.getMillis()); 140 141 test = Duration.standardMinutes(2); 142 assertEquals(2L * 60L * 1000L, test.getMillis()); 143 144 test = Duration.standardMinutes(0); 145 assertSame(Duration.ZERO, test); 146 } 147 148 //----------------------------------------------------------------------- 149 public void testFactory_standardSeconds_long() throws Throwable { 150 Duration test = Duration.standardSeconds(1); 151 assertEquals(1000L, test.getMillis()); 152 153 test = Duration.standardSeconds(2); 154 assertEquals(2L * 1000L, test.getMillis()); 155 156 test = Duration.standardSeconds(0); 157 assertSame(Duration.ZERO, test); 158 } 159 160 //----------------------------------------------------------------------- 161 public void testFactory_millis_long() throws Throwable { 162 Duration test = Duration.millis(1); 163 assertEquals(1L, test.getMillis()); 164 165 test = Duration.millis(2); 166 assertEquals(2L, test.getMillis()); 167 168 test = Duration.millis(0); 169 assertSame(Duration.ZERO, test); 170 } 171 172 //----------------------------------------------------------------------- 173 public void testConstructor_long1() throws Throwable { 174 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 175 5 * DateTimeConstants.MILLIS_PER_HOUR + 176 6 * DateTimeConstants.MILLIS_PER_MINUTE + 177 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 178 Duration test = new Duration(length); 179 assertEquals(length, test.getMillis()); 180 } 181 182 //----------------------------------------------------------------------- 183 public void testConstructor_long_long1() throws Throwable { 184 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 185 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 186 Duration test = new Duration(dt1.getMillis(), dt2.getMillis()); 187 assertEquals(dt2.getMillis() - dt1.getMillis(), test.getMillis()); 188 } 189 190 //----------------------------------------------------------------------- 191 public void testConstructor_RI_RI1() throws Throwable { 192 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 193 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 194 Duration test = new Duration(dt1, dt2); 195 assertEquals(dt2.getMillis() - dt1.getMillis(), test.getMillis()); 196 } 197 198 public void testConstructor_RI_RI2() throws Throwable { 199 DateTime dt1 = null; // 2002-06-09T01:00+01:00 200 DateTime dt2 = new DateTime(2005, 7, 17, 1, 1, 1, 1); 201 Duration test = new Duration(dt1, dt2); 202 assertEquals(dt2.getMillis() - TEST_TIME_NOW, test.getMillis()); 203 } 204 205 public void testConstructor_RI_RI3() throws Throwable { 206 DateTime dt1 = new DateTime(2005, 7, 17, 1, 1, 1, 1); 207 DateTime dt2 = null; // 2002-06-09T01:00+01:00 208 Duration test = new Duration(dt1, dt2); 209 assertEquals(TEST_TIME_NOW - dt1.getMillis(), test.getMillis()); 210 } 211 212 public void testConstructor_RI_RI4() throws Throwable { 213 DateTime dt1 = null; // 2002-06-09T01:00+01:00 214 DateTime dt2 = null; // 2002-06-09T01:00+01:00 215 Duration test = new Duration(dt1, dt2); 216 assertEquals(0L, test.getMillis()); 217 } 218 219 //----------------------------------------------------------------------- 220 /** 221 * Test constructor (Object) 222 */ 223 public void testConstructor_Object1() throws Throwable { 224 Duration test = new Duration("PT72.345S"); 225 assertEquals(72345, test.getMillis()); 226 } 227 228 public void testConstructor_Object2() throws Throwable { 229 Duration test = new Duration((Object) null); 230 assertEquals(0L, test.getMillis()); 231 } 232 233 public void testConstructor_Object3() throws Throwable { 234 long length = 4 * DateTimeConstants.MILLIS_PER_DAY + 235 5 * DateTimeConstants.MILLIS_PER_HOUR + 236 6 * DateTimeConstants.MILLIS_PER_MINUTE + 237 7 * DateTimeConstants.MILLIS_PER_SECOND + 8; 238 Long base = new Long(length); 239 Duration test = new Duration(base); 240 assertEquals(length, test.getMillis()); 241 } 242 243 public void testConstructor_Object4() throws Throwable { 244 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 245 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 246 Duration base = new Duration(dt1, dt2); 247 Duration test = new Duration(base); 248 assertEquals(dt2.getMillis() - dt1.getMillis(), test.getMillis()); 249 } 250 251 public void testConstructor_Object5() throws Throwable { 252 DateTime dt1 = new DateTime(2004, 6, 9, 0, 0, 0, 0); 253 DateTime dt2 = new DateTime(2005, 7, 10, 1, 1, 1, 1); 254 Interval base = new Interval(dt1, dt2); 255 Duration test = new Duration(base); 256 assertEquals(dt2.getMillis() - dt1.getMillis(), test.getMillis()); 257 } 258 259 }