package de.saring.sportstracker.data.statistic; import de.saring.sportstracker.data.Exercise; import de.saring.sportstracker.data.SportSubType; import de.saring.sportstracker.data.SportType; import de.saring.util.data.IdObjectList; import org.junit.Before; import org.junit.Test; import java.time.LocalDateTime; import static org.junit.Assert.assertEquals; /** * This class contains all unit tests for the StatisticCalculator class. * * @author Stefan Saring * @version 1.0 */ public class StatisticCalculatorTest { private IdObjectList<Exercise> lExercises; /** * This method initializes the environment for testing. */ @Before public void setUp() { // create one sport type with one subtype SportType sportType1 = new SportType(1); SportSubType sportSubType1 = new SportSubType(1); sportType1.getSportSubTypeList().set(sportSubType1); // create some exercises for statistic calculation lExercises = new IdObjectList<>(); Exercise tempExercise = new Exercise(1); tempExercise.setSportType(sportType1); tempExercise.setSportSubType(sportSubType1); tempExercise.setDateTime(LocalDateTime.now()); tempExercise.setIntensity(Exercise.IntensityType.NORMAL); tempExercise.setDistance(20); tempExercise.setAvgSpeed(20); tempExercise.setDuration(3600); tempExercise.setAscent(350); tempExercise.setAvgHeartRate(138); lExercises.set(tempExercise); tempExercise = new Exercise(2); tempExercise.setSportType(sportType1); tempExercise.setSportSubType(sportSubType1); tempExercise.setDateTime(LocalDateTime.now()); tempExercise.setIntensity(Exercise.IntensityType.NORMAL); tempExercise.setDistance(6); tempExercise.setAvgSpeed(8.2f); tempExercise.setDuration(2634); tempExercise.setAvgHeartRate(140); tempExercise.setCalories(890); lExercises.set(tempExercise); tempExercise = new Exercise(3); tempExercise.setSportType(sportType1); tempExercise.setSportSubType(sportSubType1); tempExercise.setDateTime(LocalDateTime.now()); tempExercise.setIntensity(Exercise.IntensityType.NORMAL); tempExercise.setDistance(31); tempExercise.setAvgSpeed(19); tempExercise.setDuration(5873); tempExercise.setAscent(310); tempExercise.setCalories(620); lExercises.set(tempExercise); tempExercise = new Exercise(4); tempExercise.setSportType(sportType1); tempExercise.setSportSubType(sportSubType1); tempExercise.setDateTime(LocalDateTime.now()); tempExercise.setIntensity(Exercise.IntensityType.LOW); tempExercise.setDistance(0); tempExercise.setAvgSpeed(0); tempExercise.setDuration(7200); tempExercise.setAscent(0); tempExercise.setCalories(830); lExercises.set(tempExercise); } /** * Tests the calculation. */ @Test public void testStatisticCalculator() { // calculate statistics StatisticCalculator calculator = new StatisticCalculator(lExercises); // check statistic results assertEquals(4, calculator.getExerciseCount()); assertEquals(57d, calculator.getTotalDistance(), 0.01f); assertEquals(19307, calculator.getTotalDuration()); assertEquals(660, calculator.getTotalAscent()); assertEquals(2340, calculator.getTotalCalories()); assertEquals(57 / 3f, calculator.getAvgDistance(), 0.01f); assertEquals(47.2f / 3, calculator.getAvgSpeed(), 0.01f); assertEquals(19307 / 4, calculator.getAvgDuration()); assertEquals(660 / 4, calculator.getAvgAscent()); assertEquals(278 / 2, calculator.getAvgHeartRate()); assertEquals(2340 / 3, calculator.getAvgCalories()); assertEquals(0f, calculator.getMinDistance(), 0f); assertEquals(0f, calculator.getMinAvgSpeed(), 0f); assertEquals(2634, calculator.getMinDuration()); assertEquals(0, calculator.getMinAscent()); assertEquals(138, calculator.getMinAvgHeartRate()); assertEquals(620, calculator.getMinCalories()); assertEquals(31f, calculator.getMaxDistance(), 0.01f); assertEquals(20f, calculator.getMaxAvgSpeed(), 0.01f); assertEquals(7200, calculator.getMaxDuration()); assertEquals(350, calculator.getMaxAscent()); assertEquals(140, calculator.getMaxAvgHeartRate()); assertEquals(890, calculator.getMaxCalories()); } }