Package org.tomighty.time

Source Code of org.tomighty.time.TimerTest

package org.tomighty.time;

import org.junit.Before;
import org.junit.Test;
import org.tomighty.Phase;
import org.tomighty.bus.messages.timer.TimerFinished;
import org.tomighty.bus.messages.timer.TimerInterrupted;
import org.tomighty.bus.messages.timer.TimerStarted;
import org.tomighty.bus.messages.timer.TimerTick;
import org.tomighty.mock.bus.MockBus;

import java.util.List;

import static junit.framework.Assert.*;

public class TimerTest {

    private MockBus bus;
    private Timer timer;

    @Before
    public void setUp() throws Exception {
        bus = new MockBus();
        timer = new DefaultTimer(bus);
    }

    @Test(timeout = 5000)
    public void startTimerAndWaitToFinish() {
        timer.start(Time.seconds(3), Phase.POMODORO);

        List<Object> messages = bus.waitUntilNumberOfMessagesReach(5);

        assertEquals("Amount of published messages", 5, messages.size());
        assertEquals("First message", TimerStarted.class, messages.get(0).getClass());
        assertEquals("Second message", TimerTick.class, messages.get(1).getClass());
        assertEquals("Third message", TimerTick.class, messages.get(2).getClass());
        assertEquals("Fourth message", TimerTick.class, messages.get(3).getClass());
        assertEquals("Fifth message", TimerFinished.class, messages.get(4).getClass());

        TimerStarted timerStarted = (TimerStarted) messages.get(0);
        assertEquals("Initial time", Time.seconds(3), timerStarted.getTime());
        assertEquals("Phase when timer started", Phase.POMODORO, timerStarted.getPhase());

        TimerTick firstTick = (TimerTick) messages.get(1);
        assertEquals("First tick's time", Time.seconds(2), firstTick.getTime());
        assertEquals("First tick's phase", Phase.POMODORO, firstTick.getPhase());

        TimerTick secondTick = (TimerTick) messages.get(2);
        assertEquals("Second tick's time", Time.seconds(1), secondTick.getTime());
        assertEquals("Second tick's phase", Phase.POMODORO, secondTick.getPhase());

        TimerTick thirdTick = (TimerTick) messages.get(3);
        assertEquals("Third tick's time", Time.seconds(0), thirdTick.getTime());
        assertEquals("Third tick's phase", Phase.POMODORO, thirdTick.getPhase());
       
        TimerFinished timerFinished = (TimerFinished) messages.get(4);
        assertEquals("Phase when timer finished", Phase.POMODORO, timerFinished.getPhase());
    }

    @Test(timeout = 5000)
    public void startTimerAndInterruptAfterFirstTick() {
        timer.start(Time.seconds(3), Phase.BREAK);

        List<Object> messages = bus.waitUntilNumberOfMessagesReach(2);

        timer.interrupt();

        assertEquals("Amount of published messages", 3, messages.size());
        assertEquals("First message", TimerStarted.class, messages.get(0).getClass());
        assertEquals("Second message", TimerTick.class, messages.get(1).getClass());
        assertEquals("Third message", TimerInterrupted.class, messages.get(2).getClass());

        TimerStarted timerStarted = (TimerStarted) messages.get(0);
        assertEquals("Initial time", Time.seconds(3), timerStarted.getTime());
        assertEquals("Phase when timer started", Phase.BREAK, timerStarted.getPhase());

        TimerTick tick = (TimerTick) messages.get(1);
        assertEquals("Tick's time", Time.seconds(2), tick.getTime());
        assertEquals("Tick's phase", Phase.BREAK, tick.getPhase());

        TimerInterrupted timerInterrupted = (TimerInterrupted) messages.get(2);
        assertEquals("Time when timer was interrupted", Time.seconds(2), timerInterrupted.getTime());
        assertEquals("Phase when timer was interrupted", Phase.BREAK, timerInterrupted.getPhase());
    }

}
TOP

Related Classes of org.tomighty.time.TimerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.