@Test
  @Use(field = "boundaryDatesMode", enumeration = true)
  public void testBoundaryDatesMode() {
    calendarAttributes.set(CalendarAttributes.boundaryDatesMode, boundaryDatesMode.value);
    DayPicker proxiedDayPicker = calendar.openPopup().getProxiedDayPicker();
    MetamerPage.waitRequest(calendar, WaitRequestType.XHR).setDateTime(firstOfNovember2012);
    PopupFooterControls proxiedFooterControls = calendar.openPopup().getProxiedFooterControls();
    HeaderControls proxiedHeaderControls = calendar.openPopup().getProxiedHeaderControls();
    DateTime yearAndMonth;
    String firstOfNovember2012String = firstOfNovember2012.toString(dateTimeFormatter);
    switch (boundaryDatesMode) {
      case INACTIVE:
      case NULL:
        MetamerPage.waitRequest(proxiedDayPicker.getBoundaryDays().get(0), WaitRequestType.NONE)
            .select();
        // apply and check, that the date has not changed
        MetamerPage.waitRequest(proxiedFooterControls, WaitRequestType.NONE).applyDate();
        assertEquals(calendar.getInputValue(), firstOfNovember2012String);
        break;
      case SCROLL:
        // scroll to 28th of October 2012
        MetamerPage.waitRequest(proxiedDayPicker.getBoundaryDays().get(0), WaitRequestType.NONE)
            .select();
        yearAndMonth = proxiedHeaderControls.getYearAndMonth();
        assertEquals(yearAndMonth.getYear(), 2012);
        assertEquals(yearAndMonth.getMonthOfYear(), 10);
        // apply and check, that the date has not changed
        MetamerPage.waitRequest(proxiedFooterControls, WaitRequestType.NONE).applyDate();
        assertEquals(calendar.getInputValue(), firstOfNovember2012String);
        break;
      case SELECT:
        // select 28th of October 2012
        MetamerPage.waitRequest(proxiedDayPicker.getBoundaryDays().get(0), WaitRequestType.NONE)
            .select();
        yearAndMonth = proxiedHeaderControls.getYearAndMonth();
        assertEquals(yearAndMonth.getYear(), 2012);
        assertEquals(yearAndMonth.getMonthOfYear(), 10);

        MetamerPage.waitRequest(proxiedFooterControls, WaitRequestType.XHR).applyDate();
        DateTime parsedDateTime = dateTimeFormatter.parseDateTime(calendar.getInputValue());
        assertEquals(parsedDateTime.getYear(), 2012);
        assertEquals(parsedDateTime.getMonthOfYear(), 10);
        assertEquals(parsedDateTime.getDayOfMonth(), 28);
        break;
    }
  }