You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CalendarBasicsTest.java 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. /*
  2. * Copyright 2000-2016 Vaadin Ltd.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.vaadin.v7.tests.server.component.calendar;
  17. import static org.junit.Assert.assertEquals;
  18. import static org.junit.Assert.assertNotNull;
  19. import static org.junit.Assert.assertTrue;
  20. import java.util.Date;
  21. import java.util.GregorianCalendar;
  22. import java.util.Locale;
  23. import java.util.TimeZone;
  24. import org.junit.Test;
  25. import com.vaadin.v7.ui.Calendar;
  26. import com.vaadin.v7.ui.Calendar.TimeFormat;
  27. import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.BackwardEvent;
  28. import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.DateClickEvent;
  29. import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.EventResize;
  30. import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.ForwardEvent;
  31. import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.MoveEvent;
  32. import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.WeekClick;
  33. import com.vaadin.v7.ui.components.calendar.event.BasicEventProvider;
  34. import com.vaadin.v7.ui.components.calendar.event.CalendarEventProvider;
  35. /**
  36. * Basic API tests for the calendar
  37. */
  38. public class CalendarBasicsTest {
  39. @Test
  40. public void testEmptyConstructorInitialization() {
  41. Calendar calendar = new Calendar();
  42. // The calendar should have a basic event provider with no events
  43. CalendarEventProvider provider = calendar.getEventProvider();
  44. assertNotNull("Event provider should not be null", provider);
  45. // Basic event handlers should be registered
  46. assertNotNull(calendar.getHandler(BackwardEvent.EVENT_ID));
  47. assertNotNull(calendar.getHandler(ForwardEvent.EVENT_ID));
  48. assertNotNull(calendar.getHandler(WeekClick.EVENT_ID));
  49. assertNotNull(calendar.getHandler(DateClickEvent.EVENT_ID));
  50. assertNotNull(calendar.getHandler(MoveEvent.EVENT_ID));
  51. assertNotNull(calendar.getHandler(EventResize.EVENT_ID));
  52. // Calendar should have undefined size
  53. assertTrue(calendar.getWidth() < 0);
  54. assertTrue(calendar.getHeight() < 0);
  55. }
  56. @Test
  57. public void testConstructorWithCaption() {
  58. final String caption = "My Calendar Caption";
  59. Calendar calendar = new Calendar(caption);
  60. assertEquals(caption, calendar.getCaption());
  61. }
  62. @Test
  63. public void testConstructorWithCustomEventProvider() {
  64. BasicEventProvider myProvider = new BasicEventProvider();
  65. Calendar calendar = new Calendar(myProvider);
  66. assertEquals(myProvider, calendar.getEventProvider());
  67. }
  68. @Test
  69. public void testConstructorWithCustomEventProviderAndCaption() {
  70. BasicEventProvider myProvider = new BasicEventProvider();
  71. final String caption = "My Calendar Caption";
  72. Calendar calendar = new Calendar(caption, myProvider);
  73. assertEquals(caption, calendar.getCaption());
  74. assertEquals(myProvider, calendar.getEventProvider());
  75. }
  76. @Test
  77. public void testDefaultStartAndEndDates() {
  78. Calendar calendar = new Calendar();
  79. // If no start and end date is set the calendar will display the current
  80. // week
  81. java.util.Calendar c = new GregorianCalendar();
  82. java.util.Calendar c2 = new GregorianCalendar();
  83. c2.setTime(calendar.getStartDate());
  84. assertEquals(c.getFirstDayOfWeek(),
  85. c2.get(java.util.Calendar.DAY_OF_WEEK));
  86. c2.setTime(calendar.getEndDate());
  87. c.set(java.util.Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6);
  88. assertEquals(c.get(java.util.Calendar.DAY_OF_WEEK),
  89. c2.get(java.util.Calendar.DAY_OF_WEEK));
  90. }
  91. @Test
  92. public void testCustomStartAndEndDates() {
  93. Calendar calendar = new Calendar();
  94. java.util.Calendar c = new GregorianCalendar();
  95. Date start = c.getTime();
  96. c.add(java.util.Calendar.DATE, 3);
  97. Date end = c.getTime();
  98. calendar.setStartDate(start);
  99. calendar.setEndDate(end);
  100. assertEquals(start.getTime(), calendar.getStartDate().getTime());
  101. assertEquals(end.getTime(), calendar.getEndDate().getTime());
  102. }
  103. @Test
  104. public void testCustomLocale() {
  105. Calendar calendar = new Calendar();
  106. calendar.setLocale(Locale.CANADA_FRENCH);
  107. // Setting the locale should set the internal calendars locale
  108. assertEquals(Locale.CANADA_FRENCH, calendar.getLocale());
  109. java.util.Calendar c = new GregorianCalendar(Locale.CANADA_FRENCH);
  110. assertEquals(c.getTimeZone().getRawOffset(),
  111. calendar.getInternalCalendar().getTimeZone().getRawOffset());
  112. }
  113. @Test
  114. public void testTimeFormat() {
  115. Calendar calendar = new Calendar();
  116. // The default timeformat depends on the current locale
  117. calendar.setLocale(Locale.ENGLISH);
  118. assertEquals(TimeFormat.Format12H, calendar.getTimeFormat());
  119. calendar.setLocale(Locale.ITALIAN);
  120. assertEquals(TimeFormat.Format24H, calendar.getTimeFormat());
  121. // Setting a specific time format overrides the locale
  122. calendar.setTimeFormat(TimeFormat.Format12H);
  123. assertEquals(TimeFormat.Format12H, calendar.getTimeFormat());
  124. }
  125. @Test
  126. public void testTimeZone() {
  127. Calendar calendar = new Calendar();
  128. calendar.setLocale(Locale.CANADA_FRENCH);
  129. // By default the calendars timezone is returned
  130. assertEquals(calendar.getInternalCalendar().getTimeZone(),
  131. calendar.getTimeZone());
  132. // One can override the default behavior by specifying a timezone
  133. TimeZone customTimeZone = TimeZone.getTimeZone("Europe/Helsinki");
  134. calendar.setTimeZone(customTimeZone);
  135. assertEquals(customTimeZone, calendar.getTimeZone());
  136. }
  137. @Test
  138. public void testVisibleDaysOfWeek() {
  139. Calendar calendar = new Calendar();
  140. // The defaults are the whole week
  141. assertEquals(1, calendar.getFirstVisibleDayOfWeek());
  142. assertEquals(7, calendar.getLastVisibleDayOfWeek());
  143. calendar.setFirstVisibleDayOfWeek(0); // Invalid input
  144. assertEquals(1, calendar.getFirstVisibleDayOfWeek());
  145. calendar.setLastVisibleDayOfWeek(0); // Invalid input
  146. assertEquals(7, calendar.getLastVisibleDayOfWeek());
  147. calendar.setFirstVisibleDayOfWeek(8); // Invalid input
  148. assertEquals(1, calendar.getFirstVisibleDayOfWeek());
  149. calendar.setLastVisibleDayOfWeek(8); // Invalid input
  150. assertEquals(7, calendar.getLastVisibleDayOfWeek());
  151. calendar.setFirstVisibleDayOfWeek(4);
  152. assertEquals(4, calendar.getFirstVisibleDayOfWeek());
  153. calendar.setLastVisibleDayOfWeek(6);
  154. assertEquals(6, calendar.getLastVisibleDayOfWeek());
  155. calendar.setFirstVisibleDayOfWeek(7); // Invalid since last day is 6
  156. assertEquals(4, calendar.getFirstVisibleDayOfWeek());
  157. calendar.setLastVisibleDayOfWeek(2); // Invalid since first day is 4
  158. assertEquals(6, calendar.getLastVisibleDayOfWeek());
  159. }
  160. @Test
  161. public void testVisibleHoursInDay() {
  162. Calendar calendar = new Calendar();
  163. // Defaults are the whole day
  164. assertEquals(0, calendar.getFirstVisibleHourOfDay());
  165. assertEquals(23, calendar.getLastVisibleHourOfDay());
  166. }
  167. @Test
  168. public void isClientChangeAllowed_connectorEnabled() {
  169. TestCalendar calendar = new TestCalendar(true);
  170. assertTrue(
  171. "Calendar with enabled connector doesn't allow client change",
  172. calendar.isClientChangeAllowed());
  173. }
  174. // regression test to ensure old functionality is not broken
  175. @Test
  176. public void defaultFirstDayOfWeek() {
  177. Calendar calendar = new Calendar();
  178. calendar.setLocale(Locale.GERMAN);
  179. // simulating consequences of markAsDirty
  180. calendar.beforeClientResponse(true);
  181. assertEquals(java.util.Calendar.MONDAY,
  182. calendar.getInternalCalendar().getFirstDayOfWeek());
  183. }
  184. @Test
  185. public void customFirstDayOfWeek() {
  186. Calendar calendar = new Calendar();
  187. calendar.setLocale(Locale.GERMAN);
  188. calendar.setFirstDayOfWeek(java.util.Calendar.SUNDAY);
  189. // simulating consequences of markAsDirty
  190. calendar.beforeClientResponse(true);
  191. assertEquals(java.util.Calendar.SUNDAY,
  192. calendar.getInternalCalendar().getFirstDayOfWeek());
  193. }
  194. @Test
  195. public void customFirstDayOfWeekCanSetEvenBeforeLocale() {
  196. Calendar calendar = new Calendar();
  197. calendar.setFirstDayOfWeek(java.util.Calendar.SUNDAY);
  198. calendar.setLocale(Locale.GERMAN);
  199. // simulating consequences of markAsDirty
  200. calendar.beforeClientResponse(true);
  201. assertEquals(java.util.Calendar.SUNDAY,
  202. calendar.getInternalCalendar().getFirstDayOfWeek());
  203. }
  204. @Test
  205. public void customFirstDayOfWeekSetNullRestoresDefault() {
  206. Calendar calendar = new Calendar();
  207. calendar.setLocale(Locale.GERMAN);
  208. calendar.setFirstDayOfWeek(java.util.Calendar.SUNDAY);
  209. calendar.setFirstDayOfWeek(null);
  210. // simulating consequences of markAsDirty
  211. calendar.beforeClientResponse(true);
  212. assertEquals(java.util.Calendar.MONDAY,
  213. calendar.getInternalCalendar().getFirstDayOfWeek());
  214. }
  215. @Test(expected = IllegalArgumentException.class)
  216. public void customFirstDayOfWeekValidation() {
  217. Calendar calendar = new Calendar();
  218. int someWrongDayOfWeek = 10;
  219. calendar.setFirstDayOfWeek(someWrongDayOfWeek);
  220. }
  221. private static class TestCalendar extends Calendar {
  222. TestCalendar(boolean connectorEnabled) {
  223. isConnectorEnabled = connectorEnabled;
  224. }
  225. @Override
  226. public boolean isConnectorEnabled() {
  227. return isConnectorEnabled;
  228. }
  229. @Override
  230. public boolean isClientChangeAllowed() {
  231. return super.isClientChangeAllowed();
  232. }
  233. private final boolean isConnectorEnabled;
  234. }
  235. }