⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 businesscalendartest.java

📁 jbpm demo 是一款非常不错的开源工作流,简单易用,适合扩张开发!
💻 JAVA
字号:
/*
 * JBoss, Home of Professional Open Source
 * Copyright 2005, JBoss Inc., and individual contributors as indicated
 * by the @authors tag. See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package org.jbpm.calendar;

import java.util.*;
import junit.framework.*;

public class BusinessCalendarTest extends TestCase {

  static BusinessCalendar businessCalendar = new BusinessCalendar();

  public void testNonBusinessDurationAddition() throws Exception {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 7);
    calendar.set(Calendar.HOUR_OF_DAY, 10);
    calendar.set(Calendar.MINUTE, 30);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date start = calendar.getTime();

    Date twentySecondsLater = 
      businessCalendar.add(start, new Duration("20 seconds"));
    
    calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 7);
    calendar.set(Calendar.HOUR_OF_DAY, 10);
    calendar.set(Calendar.MINUTE, 30);
    calendar.set(Calendar.SECOND, 20);
    calendar.set(Calendar.MILLISECOND, 0);
    Date expected = calendar.getTime();
    
    assertEquals(expected, twentySecondsLater);
  }
  
  public void testNonBusinessDurationAdditionOverNonBusinessTime() throws Exception {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 7);
    calendar.set(Calendar.HOUR_OF_DAY, 11);
    calendar.set(Calendar.MINUTE, 55);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fiveBeforeTwelve = calendar.getTime();

    Date tenMinutesLaterThenFiveBeforeTwelve = 
      businessCalendar.add(fiveBeforeTwelve, new Duration("10 minutes"));
    
    calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 7);
    calendar.set(Calendar.HOUR_OF_DAY, 12);
    calendar.set(Calendar.MINUTE, 5);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fiveAfterTwelve = calendar.getTime();
    
    assertEquals(fiveAfterTwelve, tenMinutesLaterThenFiveBeforeTwelve);
  }
  
  public void testBusinessDurationAdditionInBusinessTime() throws Exception {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 7);
    calendar.set(Calendar.HOUR_OF_DAY, 11);
    calendar.set(Calendar.MINUTE, 55);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fiveBeforeTwelve = calendar.getTime();

    Date oneMinuteLaterThenFiveBeforeTwelve = 
      businessCalendar.add(fiveBeforeTwelve, new Duration("1 business minute"));
    
    calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 7);
    calendar.set(Calendar.HOUR_OF_DAY, 11);
    calendar.set(Calendar.MINUTE, 56);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fourBeforeTwelve = calendar.getTime();
    
    assertEquals(fourBeforeTwelve, oneMinuteLaterThenFiveBeforeTwelve);
  }
  
  public void testBusinessDurationAdditionOverLunchBreak() throws Exception {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 7);
    calendar.set(Calendar.HOUR_OF_DAY, 11);
    calendar.set(Calendar.MINUTE, 55);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fiveBeforeTwelve = calendar.getTime();

    Date tenBusinessMinutesAfterFiveBeforeTwelve = 
      businessCalendar.add(fiveBeforeTwelve, new Duration("10 business minutes"));
    
    calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 7);
    calendar.set(Calendar.HOUR_OF_DAY, 12);
    calendar.set(Calendar.MINUTE, 35);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date twelveThirtyfive = calendar.getTime();
    
    assertEquals(twelveThirtyfive, tenBusinessMinutesAfterFiveBeforeTwelve);
  }
  
  public void testBusinessDurationAdditionOverDayBreak() throws Exception {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 7);
    calendar.set(Calendar.HOUR_OF_DAY, 16);
    calendar.set(Calendar.MINUTE, 55);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fiveBeforeFive = calendar.getTime();

    Date tenBusinessMinutesAfterFiveBeforeFive = 
      businessCalendar.add(fiveBeforeFive, new Duration("10 business minutes"));
    
    calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 8);
    calendar.set(Calendar.HOUR_OF_DAY, 9);
    calendar.set(Calendar.MINUTE, 5);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fiveAfterNineNextDay = calendar.getTime();
    
    assertEquals(fiveAfterNineNextDay, tenBusinessMinutesAfterFiveBeforeFive);
  }
  
  public void testBusinessDurationAdditionOverHolidayBreak() throws Exception {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.MAY);
    calendar.set(Calendar.DAY_OF_MONTH, 4);
    calendar.set(Calendar.HOUR_OF_DAY, 16);
    calendar.set(Calendar.MINUTE, 55);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fiveBeforeFive = calendar.getTime();

    Date tenBusinessMinutesAfterFiveBeforeFive = 
      businessCalendar.add(fiveBeforeFive, new Duration("10 business minutes"));
    
    calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.MAY);
    calendar.set(Calendar.DAY_OF_MONTH, 6);
    calendar.set(Calendar.HOUR_OF_DAY, 9);
    calendar.set(Calendar.MINUTE, 5);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fiveAfterNineTwoDaysLater = calendar.getTime();
    
    assertEquals(fiveAfterNineTwoDaysLater, tenBusinessMinutesAfterFiveBeforeFive);
  }
  
  public void testBusinessDurationAdditionOverWeekendBreak() throws Exception {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 8);
    calendar.set(Calendar.HOUR_OF_DAY, 16);
    calendar.set(Calendar.MINUTE, 55);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fiveBeforeFive = calendar.getTime();

    Date tenBusinessMinutesAfterFiveBeforeFive = 
      businessCalendar.add(fiveBeforeFive, new Duration("10 business minutes"));
    
    calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 11);
    calendar.set(Calendar.HOUR_OF_DAY, 9);
    calendar.set(Calendar.MINUTE, 5);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date fiveAfterNineAfterTheWeekend = calendar.getTime();
    
    assertEquals(fiveAfterNineAfterTheWeekend, tenBusinessMinutesAfterFiveBeforeFive);
  }
  
  public void testBusinessDurationAdditionStartingOutsideBusinessHours() throws Exception {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 8);
    calendar.set(Calendar.HOUR_OF_DAY, 12);
    calendar.set(Calendar.MINUTE, 15);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date quarterPastTwelve = calendar.getTime();

    Date tenBusinessMinutesAfterQuarterPastTwelve = 
      businessCalendar.add(quarterPastTwelve, new Duration("30 business minutes"));
    
    calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 8);
    calendar.set(Calendar.HOUR_OF_DAY, 13);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date oneOClock = calendar.getTime();
    
    assertEquals(oneOClock, tenBusinessMinutesAfterQuarterPastTwelve);
  }
  
  public void testBusinessDurationAdditionStartingOutsideBusinessHoursAndOverWeekend() throws Exception {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 8);
    calendar.set(Calendar.HOUR_OF_DAY, 12);
    calendar.set(Calendar.MINUTE, 15);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date quarterPastTwelve = calendar.getTime();

    Date fiveBusinessHoursAfterQuarterPastTwelve = 
      businessCalendar.add(quarterPastTwelve, new Duration("5 business hours"));
    
    calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 11);
    calendar.set(Calendar.HOUR_OF_DAY, 9);
    calendar.set(Calendar.MINUTE, 30);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    Date halfPastNineAfterTheWeekend = calendar.getTime();
    
    assertEquals(halfPastNineAfterTheWeekend, fiveBusinessHoursAfterQuarterPastTwelve);
  }
  
  public void testNextDayStart() {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 8);
    calendar.set(Calendar.HOUR_OF_DAY, 13);
    calendar.set(Calendar.MINUTE, 15);
    Date justAfterLunchOnAprilEight2005 = calendar.getTime();
    Date startOfNextDay = businessCalendar.findStartOfNextDay(justAfterLunchOnAprilEight2005);
    
    calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 9);
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    assertEquals(calendar.getTime(), startOfNextDay);
  }
  
  public void testDayOfWeek() {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 8);
    calendar.set(Calendar.HOUR_OF_DAY, 13);
    calendar.set(Calendar.MINUTE, 15);
    Date justAfterLunchOnAprilEight2005 = calendar.getTime();

    Day day = businessCalendar.findDay(justAfterLunchOnAprilEight2005);
    assertSame(businessCalendar.weekDays[Calendar.FRIDAY], day);
  }
  
  public void testFindNextDayPart() {
    Calendar calendar = BusinessCalendar.getCalendar();
    calendar.set(Calendar.YEAR, 2005);
    calendar.set(Calendar.MONTH, Calendar.APRIL);
    calendar.set(Calendar.DAY_OF_MONTH, 8);
    calendar.set(Calendar.HOUR_OF_DAY, 21);
    calendar.set(Calendar.MINUTE, 15);
    Date outsideBusinessHours = calendar.getTime();

    BusinessCalendar bc = new BusinessCalendar();
    bc.findNextDayPart(outsideBusinessHours);      
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -