Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8fd6a4c8 authored by cketti's avatar cketti
Browse files

Add tests for QuietTimeChecker

parent 0e6108a8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -996,7 +996,7 @@ public class K9 extends Application {
            return false;
        }

        QuietTimeChecker quietTimeChecker = new QuietTimeChecker(mQuietTimeStarts, mQuietTimeEnds);
        QuietTimeChecker quietTimeChecker = new QuietTimeChecker(Clock.INSTANCE, mQuietTimeStarts, mQuietTimeEnds);
        return quietTimeChecker.isQuietTime();
    }

+4 −1
Original line number Diff line number Diff line
@@ -6,17 +6,20 @@ import java.util.GregorianCalendar;


class QuietTimeChecker {
    private final Clock clock;
    private final String quietTimeStart;
    private final String quietTimeEnd;


    QuietTimeChecker(String quietTimeStart, String quietTimeEnd) {
    QuietTimeChecker(Clock clock, String quietTimeStart, String quietTimeEnd) {
        this.clock = clock;
        this.quietTimeStart = quietTimeStart;
        this.quietTimeEnd = quietTimeEnd;
    }

    public boolean isQuietTime() {
        GregorianCalendar gregorianCalendar = new GregorianCalendar();
        gregorianCalendar.setTimeInMillis(clock.getTime());

        Integer startHour = Integer.parseInt(quietTimeStart.split(":")[0]);
        Integer startMinute = Integer.parseInt(quietTimeStart.split(":")[1]);
+121 −0
Original line number Diff line number Diff line
package com.fsck.k9


import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.mockito.Mockito.mock
import java.util.*


class QuietTimeCheckerTest {
    private val clock = mock(Clock::class.java)

    @Test
    fun endTimeBeforeStartTime_timeIsBeforeEndOfQuietTime() {
        setClockTo("02:00")
        val quietTimeChecker = QuietTimeChecker(clock, "22:30", "06:45")

        assertTrue(quietTimeChecker.isQuietTime)
    }

    @Test
    fun endTimeBeforeStartTime_timeIsAfterEndOfQuietTime() {
        setClockTo("10:00")
        val quietTimeChecker = QuietTimeChecker(clock, "22:30", "06:45")

        assertFalse(quietTimeChecker.isQuietTime)
    }

    @Test
    fun endTimeBeforeStartTime_timeIsAfterStartOfQuietTime() {
        setClockTo("23:00")
        val quietTimeChecker = QuietTimeChecker(clock, "22:30", "06:45")

        assertTrue(quietTimeChecker.isQuietTime)
    }

    @Test
    fun endTimeBeforeStartTime_timeIsStartOfQuietTime() {
        setClockTo("22:30")
        val quietTimeChecker = QuietTimeChecker(clock, "22:30", "06:45")

        assertTrue(quietTimeChecker.isQuietTime)
    }

    @Test
    fun endTimeBeforeStartTime_timeIsEndOfQuietTime() {
        setClockTo("06:45")
        val quietTimeChecker = QuietTimeChecker(clock, "22:30", "06:45")

        assertTrue(quietTimeChecker.isQuietTime)
    }

    @Test
    fun startTimeBeforeEndTime_timeIsBeforeStartOfQuietTime() {
        setClockTo("02:00")
        val quietTimeChecker = QuietTimeChecker(clock, "09:00", "17:00")

        assertFalse(quietTimeChecker.isQuietTime)
    }

    @Test
    fun startTimeBeforeEndTime_timeIsAfterStartOfQuietTime() {
        setClockTo("10:00")
        val quietTimeChecker = QuietTimeChecker(clock, "09:00", "17:00")

        assertTrue(quietTimeChecker.isQuietTime)
    }

    @Test
    fun startTimeBeforeEndTime_timeIsAfterEndOfQuietTime() {
        setClockTo("20:00")
        val quietTimeChecker = QuietTimeChecker(clock, "09:00", "17:00")

        assertFalse(quietTimeChecker.isQuietTime)
    }

    @Test
    fun startTimeBeforeEndTime_timeIsStartOfQuietTime() {
        setClockTo("09:00")
        val quietTimeChecker = QuietTimeChecker(clock, "09:00", "17:00")

        assertTrue(quietTimeChecker.isQuietTime)
    }

    @Test
    fun startTimeBeforeEndTime_timeIsEndOfQuietTime() {
        setClockTo("17:00")
        val quietTimeChecker = QuietTimeChecker(clock, "09:00", "17:00")

        assertTrue(quietTimeChecker.isQuietTime)
    }

    @Test
    fun startTimeEqualsEndTime_timeIsDifferentFromStartAndEndOfQuietTime_shouldReturnFalse() {
        setClockTo("10:00")
        val quietTimeChecker = QuietTimeChecker(clock, "06:00", "06:00")

        assertFalse(quietTimeChecker.isQuietTime)
    }

    @Test
    fun startTimeEqualsEndTime_timeIsEqualToStartAndEndOfQuietTime_shouldReturnFalse() {
        setClockTo("06:00")
        val quietTimeChecker = QuietTimeChecker(clock, "06:00", "06:00")

        assertFalse(quietTimeChecker.isQuietTime)
    }


    private fun setClockTo(time: String) {
        val (hourOfDay, minute) = time.split(':').map { it.toInt() }

        val calendar = Calendar.getInstance()
        calendar.set(Calendar.HOUR_OF_DAY, hourOfDay)
        calendar.set(Calendar.MINUTE, minute)

        val timeInMillis = calendar.timeInMillis
        whenever(clock.time).thenReturn(timeInMillis)
    }
}