1 4 package org.oddjob.schedules.schedules; 5 6 import java.text.ParseException ; 7 import java.util.Calendar ; 8 import java.util.Date ; 9 import java.util.TimeZone ; 10 11 import junit.framework.TestCase; 12 13 import org.apache.log4j.Logger; 14 import org.oddjob.schedules.DateUtils; 15 import org.oddjob.schedules.Interval; 16 import org.oddjob.schedules.ScheduleContext; 17 import org.oddjob.util.DateHelper; 18 19 22 public class TimeScheduleTest extends TestCase { 23 private static final Logger logger = Logger.getLogger("org.oddjob"); 24 25 protected void setUp() { 26 logger.debug("============== " + getName() + " =================="); 27 } 28 29 public void testGetStartDate() throws ParseException { 30 TimeSchedule s = new TimeSchedule(); 31 s.setFrom("10:00"); 32 s.setTo("11:00"); 33 34 Date result = s.getStartDate(new ScheduleContext( 35 DateHelper.parseDateTime("2-mar-06 09:00"))); 36 37 assertEquals(DateHelper.parseDateTime("2-mar-06 10:00"), result); 38 39 result = s.getStartDate(new ScheduleContext( 40 DateHelper.parseDateTime("2-mar-06 10:30"))); 41 42 assertEquals(DateHelper.parseDateTime("2-mar-06 10:00"), result); 43 44 result = s.getStartDate(new ScheduleContext( 45 DateHelper.parseDateTime("2-mar-06 11:30"))); 46 47 assertEquals(DateHelper.parseDateTime("3-mar-06 10:00"), result); 48 } 49 50 public void testGetStartDate2() throws ParseException { 51 TimeSchedule s = new TimeSchedule(); 52 s.setFrom("11:00"); 53 s.setTo("10:00"); 54 55 Date result = s.getStartDate(new ScheduleContext( 56 DateHelper.parseDateTime("2-mar-06 09:00"))); 57 58 assertEquals(DateHelper.parseDateTime("1-mar-06 11:00"), result); 59 60 result = s.getStartDate(new ScheduleContext( 61 DateHelper.parseDateTime("2-mar-06 10:30"))); 62 63 assertEquals(DateHelper.parseDateTime("2-mar-06 11:00"), result); 64 65 result = s.getStartDate(new ScheduleContext( 66 DateHelper.parseDateTime("2-mar-06 11:30"))); 67 68 assertEquals(DateHelper.parseDateTime("2-mar-06 11:00"), result); 69 } 70 71 public void testGetEndDate() throws ParseException { 72 TimeSchedule s = new TimeSchedule(); 73 s.setFrom("10:00"); 74 s.setTo("11:00"); 75 76 Date result = s.getEndDate(new ScheduleContext( 77 DateHelper.parseDateTime("2-mar-06 09:00"))); 78 79 assertEquals(DateHelper.parseDateTime("2-mar-06 10:59:59:999"), result); 80 81 result = s.getEndDate(new ScheduleContext( 82 DateHelper.parseDateTime("2-mar-06 10:30"))); 83 84 assertEquals(DateHelper.parseDateTime("2-mar-06 10:59:59:999"), result); 85 86 result = s.getEndDate(new ScheduleContext( 87 DateHelper.parseDateTime("2-mar-06 11:30"))); 88 89 assertEquals(DateHelper.parseDateTime("3-mar-06 10:59:59:999"), result); 90 } 91 92 public void testGetEndDate2() throws ParseException { 93 TimeSchedule s = new TimeSchedule(); 94 s.setFrom("11:00"); 95 s.setTo("10:00"); 96 97 Date result = s.getEndDate(new ScheduleContext( 98 DateHelper.parseDateTime("2-mar-06 09:00"))); 99 100 assertEquals(DateHelper.parseDateTime("2-mar-06 09:59:59:999"), result); 101 102 result = s.getEndDate(new ScheduleContext( 103 DateHelper.parseDateTime("2-mar-06 10:30"))); 104 105 assertEquals(DateHelper.parseDateTime("3-mar-06 09:59:59:999"), result); 106 107 result = s.getEndDate(new ScheduleContext( 108 DateHelper.parseDateTime("2-mar-06 11:30"))); 109 110 assertEquals(DateHelper.parseDateTime("3-mar-06 09:59:59:999"), result); 111 } 112 113 114 public void testSimple() throws ParseException { 115 TimeSchedule s = new TimeSchedule(); 116 s.setFrom("10:00"); 117 s.setTo("11:00"); 118 119 Date on; 120 ScheduleContext context; 121 Date expectedFrom; 122 Date expectedTo; 123 124 on = DateHelper.parseDateTime("21-jun-05 9:56"); 125 context = new ScheduleContext(on); 126 expectedFrom = DateHelper.parseDateTime("21-jun-05 10:00"); 127 expectedTo = DateHelper.parseDateTime("21-jun-05 10:59:59:999"); 128 129 assertEquals(expectedFrom, s.getStartDate(context)); 130 assertEquals(expectedTo, s.getEndDate(context)); 131 132 on = DateHelper.parseDateTime("21-jun-05 10:30"); 133 context = new ScheduleContext(on); 134 expectedFrom = DateHelper.parseDateTime("21-jun-05 10:00"); 135 expectedTo = DateHelper.parseDateTime("21-jun-05 10:59:59:999"); 136 137 assertEquals(expectedFrom, s.getStartDate(context)); 138 assertEquals(expectedTo, s.getEndDate(context)); 139 140 on = DateHelper.parseDateTime("21-jun-05 12:30"); 141 context = new ScheduleContext(on); 142 expectedFrom = DateHelper.parseDateTime("22-jun-05 10:00"); 143 expectedTo = DateHelper.parseDateTime("22-jun-05 10:59:59:999"); 144 145 assertEquals(expectedFrom, 146 s.getStartDate(context)); 147 assertEquals(expectedTo, 148 s.getEndDate(context)); 149 } 150 151 public void testOverMidnight() throws ParseException { 152 TimeSchedule s = new TimeSchedule(); 153 s.setFrom("23:00"); 154 s.setTo("01:00"); 155 156 Date on; 157 ScheduleContext context; 158 Date expectedFrom; 159 Date expectedTo; 160 161 on = DateHelper.parseDateTime("21-jun-05 2:56"); 163 context = new ScheduleContext(on); 164 expectedFrom = DateHelper.parseDateTime("21-jun-05 23:00"); 165 expectedTo = DateHelper.parseDateTime("22-jun-05 00:59:59:999"); 166 167 assertEquals(expectedFrom, s.getStartDate(context)); 168 assertEquals(expectedTo, s.getEndDate(context)); 169 170 on = DateHelper.parseDateTime("22-jun-05 0:30"); 172 context = new ScheduleContext(on); 173 expectedFrom = DateHelper.parseDateTime("21-jun-05 23:00"); 174 expectedTo = DateHelper.parseDateTime("22-jun-05 00:59:59:999"); 175 176 assertEquals(expectedFrom, s.getStartDate(context)); 177 assertEquals(expectedTo, s.getEndDate(context)); 178 179 on = DateHelper.parseDateTime("22-jun-05 12:30"); 181 context = new ScheduleContext(on); 182 expectedFrom = DateHelper.parseDateTime("22-jun-05 23:00"); 183 expectedTo = DateHelper.parseDateTime("23-jun-05 00:59:59:999"); 184 185 assertEquals(expectedFrom, s.getStartDate(context)); 186 assertEquals(expectedTo, s.getEndDate(context)); 187 } 188 189 public void testOn() throws ParseException { 190 TimeSchedule s = new TimeSchedule(); 191 s.setOn("12:00"); 192 193 Date on; 194 ScheduleContext context; 195 Date expectedFrom; 196 Date expectedTo; 197 198 on = DateHelper.parseDateTime("21-jun-05 8:00"); 199 context = new ScheduleContext(on); 200 expectedFrom = DateHelper.parseDateTime("21-jun-05 12:00"); 201 expectedTo = DateHelper.parseDateTime("21-jun-05 12:00"); 202 203 assertEquals(expectedFrom, 204 s.getStartDate(context)); 205 assertEquals(expectedTo, 206 s.getEndDate(context)); 207 208 on = DateHelper.parseDateTime("21-jun-05 12:00"); 209 context = new ScheduleContext(on); 210 expectedFrom = DateHelper.parseDateTime("21-jun-05 12:00"); 211 expectedTo = DateHelper.parseDateTime("21-jun-05 12:00"); 212 213 assertEquals(expectedFrom, s.getStartDate(context)); 214 assertEquals(expectedTo, s.getEndDate(context)); 215 216 on = DateHelper.parseDateTime("21-jun-05 12:30"); 217 context = new ScheduleContext(on); 218 expectedFrom = DateHelper.parseDateTime("22-jun-05 12:00"); 219 expectedTo = DateHelper.parseDateTime("22-jun-05 12:00"); 220 221 assertEquals(expectedFrom, s.getStartDate(context)); 222 assertEquals(expectedTo, s.getEndDate(context)); 223 } 224 225 229 public void testCalendarAssuptions() throws ParseException { 230 TimeZone.setDefault(TimeZone.getTimeZone("Europe/London")); 231 232 Date sample = DateHelper.parseDateTime("29-oct-05 02:00"); 233 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/London")); 234 cal.setTime(sample); 235 236 cal.add(Calendar.DATE, 1); 237 238 assertEquals(DateHelper.parseDateTime("30-oct-05 02:00"), cal.getTime()); 239 } 240 241 public void testDayLightSavingChangeForward() throws ParseException { 242 TimeZone.setDefault(TimeZone.getTimeZone("Europe/London")); 243 244 TimeSchedule s = new TimeSchedule(); 245 s.setOn("02:00"); 246 247 Date on; 248 ScheduleContext context; 249 Date expectedFrom; 250 Date expectedTo; 251 252 on = DateHelper.parseDateTime("29-oct-05 12:00"); 253 context = new ScheduleContext(on); 254 expectedFrom = DateHelper.parseDateTime("30-oct-05 02:00"); 255 expectedTo = expectedFrom; 256 257 assertEquals(expectedFrom, 258 s.getStartDate(context)); 259 assertEquals(expectedTo, 260 s.getEndDate(context)); 261 262 on = new Date (expectedFrom.getTime() + 1); 263 context = new ScheduleContext(on); 264 expectedFrom = DateHelper.parseDateTime("31-oct-05 02:00"); 265 expectedTo = expectedFrom; 266 267 assertEquals(expectedFrom, 268 s.getStartDate(context)); 269 assertEquals(expectedTo, 270 s.getEndDate(context)); 271 } 272 273 public void testDayLightSavingChangeBack() throws ParseException { 274 TimeZone.setDefault(TimeZone.getTimeZone("Europe/London")); 275 276 TimeSchedule s = new TimeSchedule(); 277 s.setOn("02:00"); 278 279 Date on; 280 ScheduleContext context; 281 Date expectedFrom; 282 Date expectedTo; 283 284 on = DateHelper.parseDateTime("26-mar-05 12:00"); 285 context = new ScheduleContext(on); 286 expectedFrom = DateHelper.parseDateTime("27-mar-05 02:00"); 287 expectedTo = expectedFrom; 288 289 assertEquals(expectedFrom, 290 s.getStartDate(context)); 291 assertEquals(expectedTo, 292 s.getEndDate(context)); 293 294 on = new Date (expectedFrom.getTime() + 1); 295 context = new ScheduleContext(on); 296 expectedFrom = DateHelper.parseDateTime("28-mar-05 02:00"); 297 expectedTo = expectedFrom; 298 299 assertEquals(expectedFrom, 300 s.getStartDate(context)); 301 assertEquals(expectedTo, 302 s.getEndDate(context)); 303 } 304 305 public void testWithLimits() throws ParseException { 306 TimeSchedule s = new TimeSchedule(); 307 s.setOn("12:00"); 308 s.setLimits(new Interval(DateHelper.parseDate("21-jun-2020") 309 , DateUtils.oneMillisBefore(DateHelper.parseDate("22-jun-2020")))); 310 311 Date on; 312 ScheduleContext context; 313 Date expectedFrom; 314 Date expectedTo; 315 316 on = DateHelper.parseDateTime("21-jun-2020 12:00"); 317 context = new ScheduleContext(on); 318 expectedFrom = DateHelper.parseDateTime("21-jun-2020 12:00"); 319 expectedTo = expectedFrom; 320 321 Interval result = s.nextDue(context); 322 assertEquals(expectedFrom, 323 result.getFromDate()); 324 assertEquals(expectedTo, 325 result.getToDate()); 326 } 327 328 public void testDefaultTo() throws Exception { 330 TimeSchedule s = new TimeSchedule(); 331 s.setFrom("10:00"); 332 333 ScheduleContext context = new ScheduleContext( 334 DateHelper.parseDateTime("25-dec-05 09:00")); 335 336 Interval result = s.nextDue(context); 337 logger.debug("result " + result); 338 339 Date expectedFrom = DateHelper.parseDateTime("25-dec-2005 10:00"); 340 Date expectedTo = DateUtils.oneMillisBefore(DateHelper.parseDateTime("26-dec-2005 00:00")); 341 342 assertEquals(expectedFrom, 343 result.getFromDate()); 344 assertEquals(expectedTo, 345 result.getToDate()); 346 } 347 348 public void testDefaultFrom() throws Exception { 350 TimeSchedule s = new TimeSchedule(); 351 s.setTo("10:00"); 352 353 ScheduleContext context = new ScheduleContext( 354 DateHelper.parseDateTime("25-dec-05 11:00")); 355 356 Interval result = s.nextDue(context); 357 logger.debug("result " + result); 358 359 assertEquals(new Interval( 360 DateHelper.parseDateTime("26-dec-2005 00:00"), 361 DateHelper.parseDateTime("26-dec-2005 09:59:59:999")), 362 result); 363 } 364 365 public void testWithInterval() throws Exception { 366 TimeSchedule ts = new TimeSchedule(); 367 ts.setTo("11:59"); 368 IntervalSchedule is = new IntervalSchedule(); 369 is.setInterval("00:15"); 370 ts.addValueSchedule(is); 371 372 ScheduleContext context = new ScheduleContext( 373 DateHelper.parseDateTime("22-feb-06 14:00")); 374 375 Interval result = ts.nextDue(context); 376 logger.debug("result " + result); 377 378 Date expectedFrom = DateHelper.parseDateTime("23-feb-2006 00:00"); 379 Date expectedTo = DateUtils.oneMillisBefore(DateHelper.parseDateTime("23-feb-2006 00:15")); 380 381 assertEquals(expectedFrom, 382 result.getFromDate()); 383 assertEquals(expectedTo, 384 result.getToDate()); 385 } 386 } 387 | Popular Tags |