CalendarManager { private void init() { if (mState == State.MONTH) { setUnit(new Month(mSelected, mToday, mMinDate, mMaxDate)); } else { setUnit(new Week(mSelected, mToday, mMinDate, mMaxDate)); } mUnit.select(mSelected); } CalendarManager(@NonNull LocalDate selected, @NonNull State state, @Nullable LocalDate minDate,
                           @Nullable LocalDate maxDate);  CalendarManager(@NonNull LocalDate selected, @NonNull State state, @Nullable LocalDate minDate,
            @Nullable LocalDate maxDate, @Nullable Formatter formatter); boolean selectDay(@NonNull LocalDate date); @NonNull LocalDate getSelectedDay(); @NonNull String getHeaderText(); boolean hasNext(); boolean hasPrev(); boolean next(); boolean prev(); void toggleView(); @NonNull State getState(); CalendarUnit getUnits(); LocalDate getActiveMonth(); int getWeekOfMonth(); void init(@NonNull LocalDate date, @Nullable LocalDate minDate, @Nullable LocalDate maxDate); @Nullable LocalDate getMinDate(); void setMinDate(@Nullable LocalDate minDate); @Nullable LocalDate getMaxDate(); void setMaxDate(@Nullable LocalDate maxDate); @NonNull Formatter getFormatter();  }
@Test public void testInit() throws Exception { LocalDate now = LocalDate.now(); LocalDate min = now.minusDays(3); LocalDate max = min.plusMonths(3); mCalendarManager.init(now, min, max); assertEquals(now, mCalendarManager.getSelectedDay()); assertEquals(min, mCalendarManager.getMinDate()); assertEquals(max, mCalendarManager.getMaxDate()); assertEquals(now.withDayOfMonth(1), mCalendarManager.getActiveMonth()); CalendarUnit unit = new Month(now, now, min, max); unit.setSelected(true); assertEquals(unit, mCalendarManager.getUnits()); }