Add oving 4
This commit is contained in:
159
src/test/java/oving4/stopwatch/StopWatchTest.java
Normal file
159
src/test/java/oving4/stopwatch/StopWatchTest.java
Normal file
@@ -0,0 +1,159 @@
|
||||
package oving4.stopwatch;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class StopWatchTest {
|
||||
|
||||
private StopWatch stopWatch;
|
||||
|
||||
@BeforeEach
|
||||
public void beforeEach() {
|
||||
stopWatch = new StopWatch();
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Check that a newly created StopWatch object has correct values")
|
||||
public void testConstructor() {
|
||||
assertFalse(stopWatch.isStarted());
|
||||
assertFalse(stopWatch.isStopped());
|
||||
assertEquals(0, stopWatch.getTicks());
|
||||
assertEquals(-1, stopWatch.getTime());
|
||||
assertEquals(-1, stopWatch.getLapTime());
|
||||
assertEquals(-1, stopWatch.getLastLapTime());
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Check that tick() without start does not change the time")
|
||||
public void testTicksWithoutStart() {
|
||||
stopWatch.tick(1);
|
||||
assertEquals(-1, stopWatch.getTime());
|
||||
assertEquals(1, stopWatch.getTicks());
|
||||
|
||||
stopWatch.tick(4);
|
||||
assertEquals(-1, stopWatch.getTime());
|
||||
assertEquals(5, stopWatch.getTicks());
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Start and stop the StopWatch and check that the time is correct")
|
||||
public void testStartTickStop() {
|
||||
stopWatch.start();
|
||||
assertEquals(0, stopWatch.getTime());
|
||||
assertEquals(0, stopWatch.getTicks());
|
||||
assertTrue(stopWatch.isStarted());
|
||||
assertFalse(stopWatch.isStopped());
|
||||
|
||||
assertThrows(IllegalStateException.class, () -> {
|
||||
stopWatch.start();
|
||||
}, "Cannot start an already running StopWatch");
|
||||
|
||||
stopWatch.tick(3);
|
||||
assertEquals(3, stopWatch.getTime());
|
||||
assertEquals(3, stopWatch.getTicks());
|
||||
assertTrue(stopWatch.isStarted());
|
||||
assertFalse(stopWatch.isStopped());
|
||||
|
||||
stopWatch.tick(5);
|
||||
assertEquals(8, stopWatch.getTime());
|
||||
assertEquals(8, stopWatch.getTicks());
|
||||
assertTrue(stopWatch.isStarted());
|
||||
assertFalse(stopWatch.isStopped());
|
||||
|
||||
stopWatch.stop();
|
||||
assertEquals(8, stopWatch.getTime());
|
||||
assertEquals(8, stopWatch.getTicks());
|
||||
assertTrue(stopWatch.isStarted());
|
||||
assertTrue(stopWatch.isStopped());
|
||||
|
||||
assertThrows(IllegalStateException.class, () -> {
|
||||
stopWatch.stop();
|
||||
}, "Cannot stop a StopWatch that is already stopped");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Start and stop the StopWatch, and call tick() while it is not started")
|
||||
public void testTickStartTickStopTick() {
|
||||
stopWatch.tick(2);
|
||||
assertEquals(-1, stopWatch.getTime());
|
||||
assertEquals(2, stopWatch.getTicks());
|
||||
assertFalse(stopWatch.isStarted());
|
||||
assertFalse(stopWatch.isStopped());
|
||||
|
||||
stopWatch.start();
|
||||
assertEquals(0, stopWatch.getTime());
|
||||
assertEquals(2, stopWatch.getTicks());
|
||||
assertTrue(stopWatch.isStarted());
|
||||
assertFalse(stopWatch.isStopped());
|
||||
|
||||
stopWatch.tick(3);
|
||||
assertEquals(3, stopWatch.getTime());
|
||||
assertEquals(5, stopWatch.getTicks());
|
||||
assertTrue(stopWatch.isStarted());
|
||||
assertFalse(stopWatch.isStopped());
|
||||
|
||||
stopWatch.tick(5);
|
||||
assertEquals(8, stopWatch.getTime());
|
||||
assertEquals(10, stopWatch.getTicks());
|
||||
assertTrue(stopWatch.isStarted());
|
||||
assertFalse(stopWatch.isStopped());
|
||||
|
||||
stopWatch.stop();
|
||||
assertEquals(8, stopWatch.getTime());
|
||||
assertEquals(10, stopWatch.getTicks());
|
||||
assertTrue(stopWatch.isStarted());
|
||||
assertTrue(stopWatch.isStopped());
|
||||
|
||||
stopWatch.tick(3);
|
||||
assertEquals(8, stopWatch.getTime());
|
||||
assertEquals(13, stopWatch.getTicks());
|
||||
assertTrue(stopWatch.isStarted());
|
||||
assertTrue(stopWatch.isStopped());
|
||||
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
stopWatch.tick(-1);
|
||||
}, "Time should not be able to go backward");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Check that laps work as expected")
|
||||
public void testLaps() {
|
||||
assertThrows(IllegalStateException.class, () -> {
|
||||
stopWatch.lap();
|
||||
}, "Should not be able to start a new lap without starting the StopWatch");
|
||||
|
||||
stopWatch.start();
|
||||
assertEquals(0, stopWatch.getTime());
|
||||
assertEquals(0, stopWatch.getLapTime());
|
||||
assertEquals(-1, stopWatch.getLastLapTime());
|
||||
|
||||
stopWatch.tick(3);
|
||||
assertEquals(3, stopWatch.getTime());
|
||||
assertEquals(3, stopWatch.getLapTime());
|
||||
assertEquals(-1, stopWatch.getLastLapTime());
|
||||
|
||||
stopWatch.lap();
|
||||
assertEquals(3, stopWatch.getTime());
|
||||
assertEquals(0, stopWatch.getLapTime());
|
||||
assertEquals(3, stopWatch.getLastLapTime());
|
||||
|
||||
stopWatch.tick(5);
|
||||
assertEquals(8, stopWatch.getTime());
|
||||
assertEquals(5, stopWatch.getLapTime());
|
||||
assertEquals(3, stopWatch.getLastLapTime());
|
||||
|
||||
stopWatch.stop();
|
||||
assertEquals(8, stopWatch.getTime());
|
||||
assertEquals(0, stopWatch.getLapTime());
|
||||
assertEquals(5, stopWatch.getLastLapTime());
|
||||
|
||||
assertThrows(IllegalStateException.class, () -> {
|
||||
stopWatch.lap();
|
||||
}, "Should not be able to start a new lap with a stopped StopWatch");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user