@Test
public void testUpperBoundAllowedFutureBlocked() {

    model.setUpperBound(today);
    // the bound itself is allowed
    model.setSelectionInterval(today, today);
    assertFalse("upper bound is selectable", model.isSelectionEmpty());
    assertTrue("upper bound must be selected", model.isSelected(today));
    DateSelectionReport report = new DateSelectionReport(model);
    model.setSelectionInterval(tomorrow, tomorrow);
    assertFalse("future must not be selected", model.isSelected(tomorrow));
    assertEquals("no event fired", 0, report.getEventCount());
    // remove bound allows selection of tomorrow
    model.setUpperBound(null);
    model.setSelectionInterval(tomorrow, tomorrow);
    assertTrue("tomorrow must be selected after removing upper bound ",
            model.isSelected(tomorrow));
}