package com.kuxhausen.huemore; import android.support.test.runner.AndroidJUnit4; import com.kuxhausen.huemore.alarm.AlarmData; import com.kuxhausen.huemore.alarm.AlarmLogic; import com.kuxhausen.huemore.alarm.DaysOfWeek; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.util.Calendar; import static org.junit.Assert.assertEquals; @RunWith(AndroidJUnit4.class) public class AlarmLogicTest { private Calendar twoDaysPrior, yesterday, now, oneMinForward, oneHourForward, oneDayForward, oneDayOneMinForward, twoDaysForward, sixDaysForward, sevenDaysForward, eightDaysForward, thirteenDaysForward; @Before public void setUp() throws Exception { twoDaysPrior = Calendar.getInstance(); twoDaysPrior.clear(); twoDaysPrior.set(2014, Calendar.JULY, 24, 13, 44); yesterday = Calendar.getInstance(); yesterday.clear(); yesterday.set(2014, Calendar.JULY, 25, 13, 44); now = Calendar.getInstance(); now.clear(); now.set(2014, Calendar.JULY, 26, 13, 44); // this is a Saturday oneMinForward = Calendar.getInstance(); oneMinForward.clear(); oneMinForward.set(2014, Calendar.JULY, 26, 13, 45); oneHourForward = Calendar.getInstance(); oneHourForward.clear(); oneHourForward.set(2014, Calendar.JULY, 26, 14, 44); oneDayForward = Calendar.getInstance(); oneDayForward.clear(); oneDayForward.set(2014, Calendar.JULY, 27, 13, 44); oneDayOneMinForward = Calendar.getInstance(); oneDayOneMinForward.clear(); oneDayOneMinForward.set(2014, Calendar.JULY, 27, 13, 45); twoDaysForward = Calendar.getInstance(); twoDaysForward.clear(); twoDaysForward.set(2014, Calendar.JULY, 28, 13, 44); sixDaysForward = Calendar.getInstance(); sixDaysForward.clear(); sixDaysForward.set(2014, Calendar.AUGUST, 1, 13, 44); sevenDaysForward = Calendar.getInstance(); sevenDaysForward.clear(); sevenDaysForward.set(2014, Calendar.AUGUST, 2, 13, 44); eightDaysForward = Calendar.getInstance(); eightDaysForward.clear(); eightDaysForward.set(2014, Calendar.AUGUST, 3, 13, 44); thirteenDaysForward = Calendar.getInstance(); thirteenDaysForward.clear(); thirteenDaysForward.set(2014, Calendar.AUGUST, 8, 13, 44); } @Test public void testComputeNextAlarmTime1() { AlarmData ad1 = new AlarmData(); ad1.setEnabled(true); ad1.setAlarmTime(oneDayForward); assertEquals(oneDayForward, AlarmLogic.computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), now)); } @Test public void testComputeNextAlarmTime2() { AlarmData ad1 = new AlarmData(); ad1.setEnabled(true); ad1.setAlarmTime(oneMinForward); assertEquals(oneDayOneMinForward, AlarmLogic.computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), now)); } @Test public void testComputeNextAlarmTime3() { AlarmData ad1 = new AlarmData(); ad1.setEnabled(true); ad1.setAlarmTime(oneHourForward); assertEquals(oneHourForward, AlarmLogic.computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), now)); } @Test public void testComputeNextAlarmTime4() { AlarmData ad1 = new AlarmData(); ad1.setEnabled(true); ad1.setAlarmTime(yesterday); assertEquals(oneDayForward, AlarmLogic.computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), now)); } @Test public void testComputeNextAlarmTime1Repeating() { DaysOfWeek fridays = new DaysOfWeek(); fridays.setDay(Calendar.FRIDAY, true); AlarmData ad1 = new AlarmData(); ad1.setEnabled(true); ad1.setAlarmTime(yesterday); ad1.setRepeatDays(fridays); assertEquals(sixDaysForward, AlarmLogic.computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), now)); assertEquals(sixDaysForward, AlarmLogic.computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), oneDayOneMinForward)); assertEquals(yesterday, AlarmLogic.computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), twoDaysPrior)); assertEquals(thirteenDaysForward, AlarmLogic .computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), sixDaysForward)); } @Test public void testComputeNextAlarmTime2Repeating() { DaysOfWeek weekends = new DaysOfWeek(); weekends.setDay(Calendar.SATURDAY, true); weekends.setDay(Calendar.SUNDAY, true); AlarmData ad1 = new AlarmData(); ad1.setEnabled(true); ad1.setAlarmTime(yesterday); ad1.setRepeatDays(weekends); assertEquals(now, AlarmLogic.computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), yesterday)); assertEquals(oneDayForward, AlarmLogic .computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), now)); assertEquals(sevenDaysForward, AlarmLogic.computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), oneDayOneMinForward)); assertEquals(eightDaysForward, AlarmLogic.computeNextAlarmTime(ad1.getHourOfDay(), ad1.getMinute(), ad1.getRepeatDays(), sevenDaysForward)); } }