@Test
  public void end_period_over_weekend_and_start_in_weekend() {
    Date start = asDate("04/01/2014 23:30:01");
    Date end = asDate("17/01/2014 23:30:01");
    assertEquals(end, generalCalendar.calculate(start, 10));
    assertEquals(10, generalCalendar.countDays(start, end));

    assertEquals(9, generalCalendar.countDays(start, asDate("17/01/2014 23:30:00")));
    assertEquals(10, generalCalendar.countDays(start, asDate("17/01/2014 23:30:02")));
  }
  @Test
  public void zero_period() {
    Date start = asDate("22/07/2014 10:50:31");
    assertEquals(start, generalCalendar.calculate(start, 0));
    assertEquals(0, generalCalendar.countDays(start, start));

    assertEquals(0, generalCalendar.countDays(start, asDate("23/07/2014 10:50:30")));
    assertEquals(1, generalCalendar.countDays(start, asDate("23/07/2014 10:50:31")));
    assertEquals(-1, generalCalendar.countDays(asDate("23/07/2014 10:50:32"), start));
  }
  @Test
  public void end_period_over_weekend() {
    Date start = asDate("22/07/2014 10:50:31");
    Date end = asDate("05/08/2014 10:50:31");
    assertEquals(end, generalCalendar.calculate(start, 10));
    assertEquals(10, generalCalendar.countDays(start, end));

    assertEquals(9, generalCalendar.countDays(start, asDate("05/08/2014 10:50:30")));
    assertEquals(10, generalCalendar.countDays(start, asDate("05/08/2014 10:50:32")));
    assertEquals(10, generalCalendar.countDays(start, asDate("06/08/2014 10:50:30")));
  }
  @Test
  public void end_period_over_weekend_and_period_contain_holiday() {
    ImmutableSet<Date> holidays = ImmutableSet.of(asDay("06/01/2014"));
    BusinessCalendarDueDateCalculator calendar =
        new BusinessCalendarDueDateCalculator(emptyDates, holidays);

    Date start = asDate("04/01/2014 23:30:01");
    Date end = asDate("20/01/2014 23:30:01");
    assertEquals(end, calendar.calculate(start, 10));
    assertEquals(10, calendar.countDays(start, end));

    assertEquals(9, calendar.countDays(start, asDate("20/01/2014 23:30:00")));
    assertEquals(10, calendar.countDays(start, asDate("20/01/2014 23:30:02")));
  }
 @Test(expected = IllegalArgumentException.class)
 public void duration_must_more_than_zero() {
   generalCalendar.calculate(new Date(), -1);
 }
 @Test(expected = IllegalArgumentException.class)
 public void date_must_not_null() {
   generalCalendar.calculate(null, 0);
 }