/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.calendar.util; import com.liferay.portal.kernel.test.util.RandomTestUtil; import com.liferay.portal.kernel.util.CalendarFactoryUtil; import com.liferay.portal.kernel.util.TimeZoneUtil; import com.liferay.portal.util.CalendarFactoryImpl; import java.util.Calendar; import java.util.TimeZone; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; /** * @author Adam Brandizzi */ public class JCalendarUtilTest { @BeforeClass public static void setUpClass() { CalendarFactoryUtil calendarFactoryUtil = new CalendarFactoryUtil(); calendarFactoryUtil.setCalendarFactory(new CalendarFactoryImpl()); } @Test public void testGetDSTShiftAtLosAngelesDuringDST() { Calendar jCalendar1 = JCalendarUtil.getJCalendar( 2012, Calendar.MAY, 1, 12, 0, 0, 0, TimeZoneUtil.GMT); Calendar jCalendar2 = JCalendarUtil.getJCalendar( 2013, Calendar.JULY, 2, 12, 0, 0, 0, TimeZoneUtil.GMT); int shift = JCalendarUtil.getDSTShift( jCalendar1, jCalendar2, _losAngelesTimeZone); Assert.assertEquals(0, shift); } @Test public void testGetDSTShiftAtLosAngelesDuringNoDST() { Calendar jCalendar1 = JCalendarUtil.getJCalendar( 2013, Calendar.DECEMBER, 1, 12, 0, 0, 0, TimeZoneUtil.GMT); Calendar jCalendar2 = JCalendarUtil.getJCalendar( 2013, Calendar.JANUARY, 2, 12, 0, 0, 0, TimeZoneUtil.GMT); int shift = JCalendarUtil.getDSTShift( jCalendar1, jCalendar2, _losAngelesTimeZone); Assert.assertEquals(0, shift); } @Test public void testGetDSTShiftAtLosAngelesFromDSTToNoDST() { Calendar jCalendar1 = JCalendarUtil.getJCalendar( 2013, Calendar.JULY, 1, 12, 0, 0, 0, TimeZoneUtil.GMT); Calendar jCalendar2 = JCalendarUtil.getJCalendar( 2013, Calendar.JANUARY, 1, 12, 0, 0, 0, TimeZoneUtil.GMT); int shift = JCalendarUtil.getDSTShift( jCalendar1, jCalendar2, _losAngelesTimeZone); Assert.assertEquals(JCalendarUtil.HOUR, shift); } @Test public void testGetDSTShiftAtLosAngelesFromNoDSTToDST() { Calendar jCalendar1 = JCalendarUtil.getJCalendar( 2013, Calendar.JANUARY, 1, 12, 0, 0, 0, TimeZoneUtil.GMT); Calendar jCalendar2 = JCalendarUtil.getJCalendar( 2013, Calendar.JULY, 1, 12, 0, 0, 0, TimeZoneUtil.GMT); int shift = JCalendarUtil.getDSTShift( jCalendar1, jCalendar2, _losAngelesTimeZone); Assert.assertEquals(-1 * JCalendarUtil.HOUR, shift); } @Test public void testGetJCalendar() { Calendar losAngelesJCalendar = CalendarFactoryUtil.getCalendar( randomYear(), randomMonth(), randomDayOfMonth(), randomHour(), randomMinute(), randomSecond(), randomMillisecond(), _losAngelesTimeZone); Calendar madridJCalendar = JCalendarUtil.getJCalendar( losAngelesJCalendar, _madridTimeZone); Assert.assertEquals(_madridTimeZone, madridJCalendar.getTimeZone()); Assert.assertEquals( losAngelesJCalendar.getTimeInMillis(), madridJCalendar.getTimeInMillis()); } @Test public void testIsSameDayOfWeek() { Calendar jCalendar1 = CalendarFactoryUtil.getCalendar( 2015, Calendar.DECEMBER, 4); Calendar jCalendar2 = CalendarFactoryUtil.getCalendar( 2015, Calendar.DECEMBER, 11); Assert.assertTrue( JCalendarUtil.isSameDayOfWeek(jCalendar1, jCalendar2)); jCalendar2 = CalendarFactoryUtil.getCalendar( 2015, Calendar.DECEMBER, 12); Assert.assertFalse( JCalendarUtil.isSameDayOfWeek(jCalendar1, jCalendar2)); } @Test public void testMergeJCalendar() { Calendar dateJCalendar = CalendarFactoryUtil.getCalendar( randomYear(), randomMonth(), randomDayOfMonth(), randomHour(), randomMinute(), randomSecond(), randomMillisecond(), _losAngelesTimeZone); Calendar timeJCalendar = CalendarFactoryUtil.getCalendar( randomYear(), randomMonth(), randomDayOfMonth(), randomHour(), randomMinute(), randomSecond(), randomMillisecond(), _madridTimeZone); Calendar jCalendar = JCalendarUtil.mergeJCalendar( dateJCalendar, timeJCalendar, _calcuttaTimeZone); Assert.assertEquals( dateJCalendar.get(Calendar.YEAR), jCalendar.get(Calendar.YEAR)); Assert.assertEquals( dateJCalendar.get(Calendar.MONTH), jCalendar.get(Calendar.MONTH)); Assert.assertEquals( dateJCalendar.get(Calendar.DAY_OF_MONTH), jCalendar.get(Calendar.DAY_OF_MONTH)); Assert.assertEquals( timeJCalendar.get(Calendar.HOUR), jCalendar.get(Calendar.HOUR)); Assert.assertEquals( timeJCalendar.get(Calendar.MINUTE), jCalendar.get(Calendar.MINUTE)); Assert.assertEquals( timeJCalendar.get(Calendar.SECOND), jCalendar.get(Calendar.SECOND)); Assert.assertEquals( timeJCalendar.get(Calendar.MILLISECOND), jCalendar.get(Calendar.MILLISECOND)); Assert.assertEquals( timeJCalendar.get(Calendar.AM_PM), jCalendar.get(Calendar.AM_PM)); Assert.assertEquals(_calcuttaTimeZone, jCalendar.getTimeZone()); } protected int randomDayOfMonth() { return RandomTestUtil.randomInt(1, 29); } protected int randomHour() { return RandomTestUtil.randomInt(0, 24); } protected int randomMillisecond() { return RandomTestUtil.randomInt(0, 100); } protected int randomMinute() { return RandomTestUtil.randomInt(0, 60); } protected int randomMonth() { return RandomTestUtil.randomInt(0, 12); } protected int randomSecond() { return RandomTestUtil.randomInt(0, 60); } protected int randomYear() { return RandomTestUtil.randomInt(2000, 2100); } private static final TimeZone _calcuttaTimeZone = TimeZone.getTimeZone( "Asia/Calcutta"); private static final TimeZone _losAngelesTimeZone = TimeZone.getTimeZone( "America/Los_Angeles"); private static final TimeZone _madridTimeZone = TimeZone.getTimeZone( "Europe/Madrid"); }