123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- /*
- * Copyright 2000-2016 Vaadin Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
- package com.vaadin.v7.tests.server.component.calendar;
-
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertNotNull;
- import static org.junit.Assert.assertTrue;
-
- import java.util.Date;
- import java.util.GregorianCalendar;
- import java.util.Locale;
- import java.util.TimeZone;
-
- import org.junit.Test;
-
- import com.vaadin.v7.ui.Calendar;
- import com.vaadin.v7.ui.Calendar.TimeFormat;
- import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.BackwardEvent;
- import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.DateClickEvent;
- import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.EventResize;
- import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.ForwardEvent;
- import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.MoveEvent;
- import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.WeekClick;
- import com.vaadin.v7.ui.components.calendar.event.BasicEventProvider;
- import com.vaadin.v7.ui.components.calendar.event.CalendarEventProvider;
-
- /**
- * Basic API tests for the calendar
- */
- public class CalendarBasicsTest {
-
- @Test
- public void testEmptyConstructorInitialization() {
-
- Calendar calendar = new Calendar();
-
- // The calendar should have a basic event provider with no events
- CalendarEventProvider provider = calendar.getEventProvider();
- assertNotNull("Event provider should not be null", provider);
-
- // Basic event handlers should be registered
- assertNotNull(calendar.getHandler(BackwardEvent.EVENT_ID));
- assertNotNull(calendar.getHandler(ForwardEvent.EVENT_ID));
- assertNotNull(calendar.getHandler(WeekClick.EVENT_ID));
- assertNotNull(calendar.getHandler(DateClickEvent.EVENT_ID));
- assertNotNull(calendar.getHandler(MoveEvent.EVENT_ID));
- assertNotNull(calendar.getHandler(EventResize.EVENT_ID));
-
- // Calendar should have undefined size
- assertTrue(calendar.getWidth() < 0);
- assertTrue(calendar.getHeight() < 0);
- }
-
- @Test
- public void testConstructorWithCaption() {
- final String caption = "My Calendar Caption";
- Calendar calendar = new Calendar(caption);
- assertEquals(caption, calendar.getCaption());
- }
-
- @Test
- public void testConstructorWithCustomEventProvider() {
- BasicEventProvider myProvider = new BasicEventProvider();
- Calendar calendar = new Calendar(myProvider);
- assertEquals(myProvider, calendar.getEventProvider());
- }
-
- @Test
- public void testConstructorWithCustomEventProviderAndCaption() {
- BasicEventProvider myProvider = new BasicEventProvider();
- final String caption = "My Calendar Caption";
- Calendar calendar = new Calendar(caption, myProvider);
- assertEquals(caption, calendar.getCaption());
- assertEquals(myProvider, calendar.getEventProvider());
- }
-
- @Test
- public void testDefaultStartAndEndDates() {
- Calendar calendar = new Calendar();
-
- // If no start and end date is set the calendar will display the current
- // week
- java.util.Calendar c = new GregorianCalendar();
- java.util.Calendar c2 = new GregorianCalendar();
-
- c2.setTime(calendar.getStartDate());
- assertEquals(c.getFirstDayOfWeek(),
- c2.get(java.util.Calendar.DAY_OF_WEEK));
- c2.setTime(calendar.getEndDate());
-
- c.set(java.util.Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6);
- assertEquals(c.get(java.util.Calendar.DAY_OF_WEEK),
- c2.get(java.util.Calendar.DAY_OF_WEEK));
- }
-
- @Test
- public void testCustomStartAndEndDates() {
- Calendar calendar = new Calendar();
- java.util.Calendar c = new GregorianCalendar();
-
- Date start = c.getTime();
- c.add(java.util.Calendar.DATE, 3);
- Date end = c.getTime();
-
- calendar.setStartDate(start);
- calendar.setEndDate(end);
-
- assertEquals(start.getTime(), calendar.getStartDate().getTime());
- assertEquals(end.getTime(), calendar.getEndDate().getTime());
- }
-
- @Test
- public void testCustomLocale() {
- Calendar calendar = new Calendar();
- calendar.setLocale(Locale.CANADA_FRENCH);
-
- // Setting the locale should set the internal calendars locale
- assertEquals(Locale.CANADA_FRENCH, calendar.getLocale());
- java.util.Calendar c = new GregorianCalendar(Locale.CANADA_FRENCH);
- assertEquals(c.getTimeZone().getRawOffset(),
- calendar.getInternalCalendar().getTimeZone().getRawOffset());
- }
-
- @Test
- public void testTimeFormat() {
- Calendar calendar = new Calendar();
-
- // The default timeformat depends on the current locale
- calendar.setLocale(Locale.ENGLISH);
- assertEquals(TimeFormat.Format12H, calendar.getTimeFormat());
-
- calendar.setLocale(Locale.ITALIAN);
- assertEquals(TimeFormat.Format24H, calendar.getTimeFormat());
-
- // Setting a specific time format overrides the locale
- calendar.setTimeFormat(TimeFormat.Format12H);
- assertEquals(TimeFormat.Format12H, calendar.getTimeFormat());
- }
-
- @Test
- public void testTimeZone() {
- Calendar calendar = new Calendar();
- calendar.setLocale(Locale.CANADA_FRENCH);
-
- // By default the calendars timezone is returned
- assertEquals(calendar.getInternalCalendar().getTimeZone(),
- calendar.getTimeZone());
-
- // One can override the default behavior by specifying a timezone
- TimeZone customTimeZone = TimeZone.getTimeZone("Europe/Helsinki");
- calendar.setTimeZone(customTimeZone);
- assertEquals(customTimeZone, calendar.getTimeZone());
- }
-
- @Test
- public void testVisibleDaysOfWeek() {
- Calendar calendar = new Calendar();
-
- // The defaults are the whole week
- assertEquals(1, calendar.getFirstVisibleDayOfWeek());
- assertEquals(7, calendar.getLastVisibleDayOfWeek());
-
- calendar.setFirstVisibleDayOfWeek(0); // Invalid input
- assertEquals(1, calendar.getFirstVisibleDayOfWeek());
-
- calendar.setLastVisibleDayOfWeek(0); // Invalid input
- assertEquals(7, calendar.getLastVisibleDayOfWeek());
-
- calendar.setFirstVisibleDayOfWeek(8); // Invalid input
- assertEquals(1, calendar.getFirstVisibleDayOfWeek());
-
- calendar.setLastVisibleDayOfWeek(8); // Invalid input
- assertEquals(7, calendar.getLastVisibleDayOfWeek());
-
- calendar.setFirstVisibleDayOfWeek(4);
- assertEquals(4, calendar.getFirstVisibleDayOfWeek());
-
- calendar.setLastVisibleDayOfWeek(6);
- assertEquals(6, calendar.getLastVisibleDayOfWeek());
-
- calendar.setFirstVisibleDayOfWeek(7); // Invalid since last day is 6
- assertEquals(4, calendar.getFirstVisibleDayOfWeek());
-
- calendar.setLastVisibleDayOfWeek(2); // Invalid since first day is 4
- assertEquals(6, calendar.getLastVisibleDayOfWeek());
- }
-
- @Test
- public void testVisibleHoursInDay() {
- Calendar calendar = new Calendar();
-
- // Defaults are the whole day
- assertEquals(0, calendar.getFirstVisibleHourOfDay());
- assertEquals(23, calendar.getLastVisibleHourOfDay());
- }
-
- @Test
- public void isClientChangeAllowed_connectorEnabled() {
- TestCalendar calendar = new TestCalendar(true);
- assertTrue(
- "Calendar with enabled connector doesn't allow client change",
- calendar.isClientChangeAllowed());
- }
-
- // regression test to ensure old functionality is not broken
- @Test
- public void defaultFirstDayOfWeek() {
- Calendar calendar = new Calendar();
- calendar.setLocale(Locale.GERMAN);
- // simulating consequences of markAsDirty
- calendar.beforeClientResponse(true);
- assertEquals(java.util.Calendar.MONDAY,
- calendar.getInternalCalendar().getFirstDayOfWeek());
- }
-
- @Test
- public void customFirstDayOfWeek() {
- Calendar calendar = new Calendar();
- calendar.setLocale(Locale.GERMAN);
- calendar.setFirstDayOfWeek(java.util.Calendar.SUNDAY);
-
- // simulating consequences of markAsDirty
- calendar.beforeClientResponse(true);
- assertEquals(java.util.Calendar.SUNDAY,
- calendar.getInternalCalendar().getFirstDayOfWeek());
- }
-
- @Test
- public void customFirstDayOfWeekCanSetEvenBeforeLocale() {
- Calendar calendar = new Calendar();
- calendar.setFirstDayOfWeek(java.util.Calendar.SUNDAY);
-
- calendar.setLocale(Locale.GERMAN);
- // simulating consequences of markAsDirty
- calendar.beforeClientResponse(true);
- assertEquals(java.util.Calendar.SUNDAY,
- calendar.getInternalCalendar().getFirstDayOfWeek());
- }
-
- @Test
- public void customFirstDayOfWeekSetNullRestoresDefault() {
- Calendar calendar = new Calendar();
- calendar.setLocale(Locale.GERMAN);
- calendar.setFirstDayOfWeek(java.util.Calendar.SUNDAY);
- calendar.setFirstDayOfWeek(null);
- // simulating consequences of markAsDirty
- calendar.beforeClientResponse(true);
- assertEquals(java.util.Calendar.MONDAY,
- calendar.getInternalCalendar().getFirstDayOfWeek());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void customFirstDayOfWeekValidation() {
- Calendar calendar = new Calendar();
- int someWrongDayOfWeek = 10;
- calendar.setFirstDayOfWeek(someWrongDayOfWeek);
- }
-
- private static class TestCalendar extends Calendar {
- TestCalendar(boolean connectorEnabled) {
- isConnectorEnabled = connectorEnabled;
- }
-
- @Override
- public boolean isConnectorEnabled() {
- return isConnectorEnabled;
- }
-
- @Override
- public boolean isClientChangeAllowed() {
- return super.isClientChangeAllowed();
- }
-
- private final boolean isConnectorEnabled;
- }
- }
|