package de.saring.exerciseviewer.parser.impl; import de.saring.exerciseviewer.core.EVException; import de.saring.exerciseviewer.data.EVExercise; import de.saring.exerciseviewer.parser.AbstractExerciseParser; import org.junit.Before; import org.junit.Test; import java.time.LocalDateTime; import static org.junit.Assert.*; import static org.junit.Assert.assertEquals; /** * This class contains all unit tests for the PolarSRawParser class. * * @author Stefan Saring */ public class PolarSRawParserTest { /** * Instance to be tested. */ private AbstractExerciseParser parser; /** * This method initializes the environment for testing. */ @Before public void setUp() throws Exception { parser = new PolarSRawParser(); } /** * This method must fail on parsing an exerise file which doesn't exists. */ @Test public void testParseExerciseMissingFile() { try { parser.parseExercise("missing-file.srd"); fail("Parse of the missing file must fail ..."); } catch (EVException e) { } } /** * This method tests the parser with an Polar S610 raw exercise file * recorded in metric units. * This test is taken from the C# test class so the code could be better :-) */ @Test public void testParseS610ExerciseWithMetricUnits() throws EVException { // parse exercise file EVExercise exercise = parser.parseExercise("misc/testdata/s610/ma_br_20040912T072607.srd"); // check exercise data assertEquals(exercise.getFileType(), EVExercise.ExerciseFileType.S610RAW); assertEquals("Polar S6xx/S7xx Series", exercise.getDeviceName()); assertEquals(LocalDateTime.of(2004, 9, 12, 7, 26, 7), exercise.getDateTime()); assertEquals(exercise.getType(), "TB2 "); assertEquals(exercise.getRecordingMode().isAltitude(), false); assertEquals(exercise.getRecordingMode().isSpeed(), false); assertEquals(exercise.getRecordingMode().isCadence(), false); assertEquals(exercise.getRecordingMode().isPower(), false); assertEquals(exercise.getRecordingMode().getBikeNumber(), (byte) 0); assertEquals(exercise.getDuration(), (1 * 60 * 60 * 10) + (36 * 60 * 10) + 50 * 10 + 8); assertEquals(exercise.getRecordingInterval(), (short) 5); assertEquals(exercise.getHeartRateAVG(), (short) 158); assertEquals(exercise.getHeartRateMax(), (short) 176); assertEquals(exercise.getSpeed(), null); assertEquals(exercise.getCadence(), null); assertEquals(exercise.getAltitude(), null); assertEquals(exercise.getTemperature(), null); assertEquals(exercise.getEnergy(), 1214); assertEquals(exercise.getEnergyTotal(), 22552); assertEquals(exercise.getSumExerciseTime(), (25 * 60) + 58); assertEquals(exercise.getSumRideTime(), 0); assertEquals(exercise.getOdometer(), 0); // check heart rate limits assertEquals(exercise.getHeartRateLimits().length, 3); assertTrue(exercise.getHeartRateLimits()[0].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[0].getLowerHeartRate(), (short) 143); assertEquals(exercise.getHeartRateLimits()[0].getUpperHeartRate(), (short) 162); assertEquals(exercise.getHeartRateLimits()[0].getTimeBelow(), (0 * 60 * 60) + (2 * 60) + 11); assertEquals(exercise.getHeartRateLimits()[0].getTimeWithin(), (1 * 60 * 60) + (17 * 60) + 34); assertEquals(exercise.getHeartRateLimits()[0].getTimeAbove(), (0 * 60 * 60) + (17 * 60) + 5); assertTrue(exercise.getHeartRateLimits()[1].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[1].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[1].getUpperHeartRate(), (short) 160); assertEquals(exercise.getHeartRateLimits()[1].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 0); assertEquals(exercise.getHeartRateLimits()[1].getTimeWithin(), (0 * 60 * 60) + (0 * 60) + 0); assertEquals(exercise.getHeartRateLimits()[1].getTimeAbove(), (0 * 60 * 60) + (0 * 60) + 0); assertTrue(exercise.getHeartRateLimits()[2].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[2].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[2].getUpperHeartRate(), (short) 160); assertEquals(exercise.getHeartRateLimits()[2].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 0); assertEquals(exercise.getHeartRateLimits()[2].getTimeWithin(), (0 * 60 * 60) + (0 * 60) + 0); assertEquals(exercise.getHeartRateLimits()[2].getTimeAbove(), (0 * 60 * 60) + (0 * 60) + 0); // check lap data (first and last lap only) assertEquals(exercise.getLapList().length, 3); assertEquals(exercise.getLapList()[0].getTimeSplit(), (0 * 60 * 60 * 10) + (50 * 60 * 10) + (17 * 10) + 2); assertEquals(exercise.getLapList()[0].getHeartRateSplit(), (short) 165); assertEquals(exercise.getLapList()[0].getHeartRateAVG(), (short) 157); assertEquals(exercise.getLapList()[0].getHeartRateMax(), (short) 176); assertEquals(exercise.getLapList()[0].getSpeed(), null); assertEquals(exercise.getLapList()[0].getAltitude(), null); assertEquals(exercise.getLapList()[0].getTemperature(), null); assertEquals(exercise.getLapList()[2].getTimeSplit(), (1 * 60 * 60 * 10) + (36 * 60 * 10) + (50 * 10) + 8); assertEquals(exercise.getLapList()[2].getHeartRateSplit(), (short) 159); assertEquals(exercise.getLapList()[2].getHeartRateAVG(), (short) 160); assertEquals(exercise.getLapList()[2].getHeartRateMax(), (short) 171); assertEquals(exercise.getLapList()[2].getSpeed(), null); assertEquals(exercise.getLapList()[2].getAltitude(), null); assertEquals(exercise.getLapList()[2].getTemperature(), null); // check sample data (first, two from middle and last only) assertEquals(exercise.getSampleList().length, 1163); assertEquals(0, exercise.getSampleList()[0].getTimestamp()); assertEquals(exercise.getSampleList()[0].getHeartRate(), (short) 109); assertEquals(exercise.getSampleList()[0].getAltitude(), (short) 0); assertEquals(exercise.getSampleList()[0].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[0].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[0].getDistance(), 0); assertEquals(240 * 5 * 1000, exercise.getSampleList()[240].getTimestamp()); assertEquals(exercise.getSampleList()[240].getHeartRate(), (short) 160); assertEquals(exercise.getSampleList()[240].getAltitude(), (short) 0); assertEquals(exercise.getSampleList()[240].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[240].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[240].getDistance(), 0); assertEquals(480 * 5 * 1000, exercise.getSampleList()[480].getTimestamp()); assertEquals(exercise.getSampleList()[480].getHeartRate(), (short) 161); assertEquals(exercise.getSampleList()[480].getAltitude(), (short) 0); assertEquals(exercise.getSampleList()[480].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[480].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[480].getDistance(), 0); assertEquals(1162 * 5 * 1000, exercise.getSampleList()[1162].getTimestamp()); assertEquals(exercise.getSampleList()[1162].getHeartRate(), (short) 159); assertEquals(exercise.getSampleList()[1162].getAltitude(), (short) 0); assertEquals(exercise.getSampleList()[1162].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[1162].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[1162].getDistance(), 0); } /** * This method tests the parser with an cycling exercise file * recorded in metric units from Polar S710. */ @Test public void testParseS710CyclingExerciseWithMetricUnits() throws EVException { // parse exercise file EVExercise exercise = parser.parseExercise("misc/testdata/s710/cycling-metric.srd"); // check exercise data assertEquals(EVExercise.ExerciseFileType.S710RAW, exercise.getFileType()); assertEquals("Polar S6xx/S7xx Series", exercise.getDeviceName()); assertEquals(LocalDateTime.of(2002, 11, 20, 14, 7, 44), exercise.getDateTime()); assertEquals("ExeSet1", exercise.getType()); assertEquals((1 * 60 * 60 * 10) + (13 * 60 * 10) + 34 * 10 + 3, exercise.getDuration()); assertTrue(exercise.getRecordingMode().isAltitude()); assertTrue(exercise.getRecordingMode().isSpeed()); assertFalse(exercise.getRecordingMode().isCadence()); assertFalse(exercise.getRecordingMode().isPower()); assertEquals((byte) 2, exercise.getRecordingMode().getBikeNumber()); assertEquals((short) 15, exercise.getRecordingInterval()); assertEquals((short) 135, exercise.getHeartRateAVG()); assertEquals((short) 232, exercise.getHeartRateMax()); assertEquals(251, Math.round(exercise.getSpeed().getSpeedAVG() * 10)); assertEquals(1093, Math.round(exercise.getSpeed().getSpeedMax() * 10)); assertEquals(29900, exercise.getSpeed().getDistance()); assertNull(exercise.getCadence()); assertEquals((short) 215, exercise.getAltitude().getAltitudeMin(), 215); assertEquals((short) 253, exercise.getAltitude().getAltitudeAVG(), 253); assertEquals((short) 300, exercise.getAltitude().getAltitudeMax(), 300); assertEquals((short) 3, exercise.getTemperature().getTemperatureMin(), 3); assertEquals((short) 3, exercise.getTemperature().getTemperatureAVG(), 3); assertEquals((short) 5, exercise.getTemperature().getTemperatureMax(), 5); assertEquals(591, exercise.getEnergy()); assertEquals(24099, exercise.getEnergyTotal()); assertEquals((56 * 60) + 34, exercise.getSumExerciseTime()); assertEquals((42 * 60) + 56, exercise.getSumRideTime()); assertEquals(1024, exercise.getOdometer()); // check heart rate limits assertEquals(3, exercise.getHeartRateLimits().length, 3); assertTrue(exercise.getHeartRateLimits()[0].isAbsoluteRange()); assertEquals((short) 120, exercise.getHeartRateLimits()[0].getLowerHeartRate(), 120); assertEquals((short) 155, exercise.getHeartRateLimits()[0].getUpperHeartRate(), 155); assertEquals((0 * 60 * 60) + (5 * 60) + 32, exercise.getHeartRateLimits()[0].getTimeBelow()); assertEquals((1 * 60 * 60) + (3 * 60) + 19, exercise.getHeartRateLimits()[0].getTimeWithin()); assertEquals((0 * 60 * 60) + (4 * 60) + 43, exercise.getHeartRateLimits()[0].getTimeAbove()); assertTrue(exercise.getHeartRateLimits()[1].isAbsoluteRange()); assertEquals((short) 80, exercise.getHeartRateLimits()[1].getLowerHeartRate(), 80); assertEquals((short) 160, exercise.getHeartRateLimits()[1].getUpperHeartRate(), 160); assertEquals((0 * 60 * 60) + (0 * 60) + 0, exercise.getHeartRateLimits()[1].getTimeBelow()); assertEquals((1 * 60 * 60) + (10 * 60) + 55, exercise.getHeartRateLimits()[1].getTimeWithin()); assertEquals((0 * 60 * 60) + (2 * 60) + 39, exercise.getHeartRateLimits()[1].getTimeAbove()); assertTrue(exercise.getHeartRateLimits()[2].isAbsoluteRange()); assertEquals((short) 80, exercise.getHeartRateLimits()[2].getLowerHeartRate(), 80); assertEquals((short) 160, exercise.getHeartRateLimits()[2].getUpperHeartRate(), 160); assertEquals((0 * 60 * 60) + (0 * 60) + 0, exercise.getHeartRateLimits()[2].getTimeBelow()); assertEquals((1 * 60 * 60) + (10 * 60) + 55, exercise.getHeartRateLimits()[2].getTimeWithin()); assertEquals((0 * 60 * 60) + (2 * 60) + 39, exercise.getHeartRateLimits()[2].getTimeAbove()); // check lap data (first, one from middle and last lap only) assertEquals(5, exercise.getLapList().length); assertEquals((0 * 60 * 60 * 10) + (06 * 60 * 10) + (59 * 10) + 2, exercise.getLapList()[0].getTimeSplit()); assertEquals((short) 136, exercise.getLapList()[0].getHeartRateSplit()); assertEquals((short) 128, exercise.getLapList()[0].getHeartRateAVG()); assertEquals((short) 152, exercise.getLapList()[0].getHeartRateMax()); assertEquals(141, Math.round(exercise.getLapList()[0].getSpeed().getSpeedEnd() * 10)); assertEquals(258, Math.round(exercise.getLapList()[0].getSpeed().getSpeedAVG() * 10)); assertEquals(3 * 1000, exercise.getLapList()[0].getSpeed().getDistance()); assertEquals((short) 0, exercise.getLapList()[0].getSpeed().getCadence()); assertEquals((short) 231, exercise.getLapList()[0].getAltitude().getAltitude()); assertEquals(25, exercise.getLapList()[0].getAltitude().getAscent()); assertEquals((short) 4, exercise.getLapList()[0].getTemperature().getTemperature()); assertEquals((0 * 60 * 60 * 10) + (40 * 60 * 10) + (18 * 10) + 8, exercise.getLapList()[2].getTimeSplit()); assertEquals((short) 136, exercise.getLapList()[2].getHeartRateSplit()); assertEquals((short) 134, exercise.getLapList()[2].getHeartRateAVG()); assertEquals((short) 168, exercise.getLapList()[2].getHeartRateMax()); assertEquals(193, Math.round(exercise.getLapList()[2].getSpeed().getSpeedEnd() * 10)); assertEquals(242, Math.round(exercise.getLapList()[2].getSpeed().getSpeedAVG() * 10)); assertEquals(15700, exercise.getLapList()[2].getSpeed().getDistance()); assertEquals((short) 0, exercise.getLapList()[2].getSpeed().getCadence()); assertEquals((short) 247, exercise.getLapList()[2].getAltitude().getAltitude()); assertEquals(135, exercise.getLapList()[2].getAltitude().getAscent()); assertEquals((short) 4, exercise.getLapList()[2].getTemperature().getTemperature()); assertEquals((1 * 60 * 60 * 10) + (13 * 60 * 10) + (34 * 10) + 3, exercise.getLapList()[4].getTimeSplit()); assertEquals((short) 123, exercise.getLapList()[4].getHeartRateSplit()); assertEquals((short) 121, exercise.getLapList()[4].getHeartRateAVG()); assertEquals((short) 123, exercise.getLapList()[4].getHeartRateMax()); assertEquals(0 * 10, Math.round(exercise.getLapList()[4].getSpeed().getSpeedEnd() * 10)); assertEquals(0 * 10, Math.round(exercise.getLapList()[4].getSpeed().getSpeedAVG() * 10)); assertEquals(29900, exercise.getLapList()[4].getSpeed().getDistance()); assertEquals((short) 0, exercise.getLapList()[4].getSpeed().getCadence()); assertEquals((short) 229, exercise.getLapList()[4].getAltitude().getAltitude()); assertEquals(240, exercise.getLapList()[4].getAltitude().getAscent()); assertEquals((short) 4, exercise.getLapList()[4].getTemperature().getTemperature()); // check sample data (first, two from middle and last only) assertEquals(295, exercise.getSampleList().length); assertEquals(0, exercise.getSampleList()[0].getTimestamp()); assertEquals((short) 101, exercise.getSampleList()[0].getHeartRate()); assertEquals((short) 240, exercise.getSampleList()[0].getAltitude()); assertEquals(42, Math.round(exercise.getSampleList()[0].getSpeed() * 10)); assertEquals((short) 0, exercise.getSampleList()[0].getCadence()); assertEquals(0, exercise.getSampleList()[0].getDistance()); assertEquals(100 * 15 * 1000, exercise.getSampleList()[100].getTimestamp()); assertEquals((short) 147, exercise.getSampleList()[100].getHeartRate()); assertEquals((short) 278, exercise.getSampleList()[100].getAltitude()); assertEquals(171, Math.round(exercise.getSampleList()[100].getSpeed() * 10)); assertEquals((short) 0, exercise.getSampleList()[100].getCadence()); assertEquals(9479, exercise.getSampleList()[100].getDistance()); assertEquals(200 * 15 * 1000, exercise.getSampleList()[200].getTimestamp()); assertEquals((short) 166, exercise.getSampleList()[200].getHeartRate()); assertEquals((short) 275, exercise.getSampleList()[200].getAltitude()); assertEquals(141, Math.round(exercise.getSampleList()[200].getSpeed() * 10)); assertEquals((short) 0, exercise.getSampleList()[200].getCadence()); assertEquals(19256, exercise.getSampleList()[200].getDistance()); assertEquals(294 * 15 * 1000, exercise.getSampleList()[294].getTimestamp()); assertEquals((short) 123, exercise.getSampleList()[294].getHeartRate()); assertEquals((short) 229, exercise.getSampleList()[294].getAltitude()); assertEquals(0, Math.round(exercise.getSampleList()[294].getSpeed() * 10)); assertEquals((short) 0, exercise.getSampleList()[294].getCadence()); assertEquals(29900, exercise.getSampleList()[294].getDistance()); } /** * This method tests the parser with an cycling exercise file * recorded in english units from Polar S710. * This test is taken from the C# test class so the code could be better :-) */ @Test public void testParseS710CyclingExerciseWithEnglishUnits() throws EVException { // parse exercise file EVExercise exercise = parser.parseExercise("misc/testdata/s710/cycling-english.srd"); // check exercise data assertEquals(exercise.getFileType(), EVExercise.ExerciseFileType.S710RAW); assertEquals("Polar S6xx/S7xx Series", exercise.getDeviceName()); assertEquals(LocalDateTime.of(2002, 11, 20, 13, 10, 42), exercise.getDateTime()); assertEquals(exercise.getType(), "ExeSet1"); assertEquals(exercise.getRecordingMode().isAltitude(), true); assertEquals(exercise.getRecordingMode().isSpeed(), true); assertEquals(exercise.getRecordingMode().isCadence(), false); assertEquals(exercise.getRecordingMode().isPower(), false); assertEquals(exercise.getRecordingMode().getBikeNumber(), (byte) 2); assertEquals(exercise.getDuration(), (0 * 60 * 60 * 10) + (51 * 60 * 10) + 22 * 10 + 6); assertEquals(exercise.getRecordingInterval(), (short) 15); assertEquals(exercise.getHeartRateAVG(), (short) 137); assertEquals(exercise.getHeartRateMax(), (short) 232); assertEquals(Math.round(exercise.getSpeed().getSpeedAVG() * 10), 247); assertEquals(Math.round(exercise.getSpeed().getSpeedMax() * 10), 1076); assertEquals(exercise.getSpeed().getDistance(), 20921); assertEquals(exercise.getCadence(), null); assertEquals(exercise.getAltitude().getAltitudeMin(), (short) 221); assertEquals(exercise.getAltitude().getAltitudeAVG(), (short) 245); assertEquals(exercise.getAltitude().getAltitudeMax(), (short) 277); assertEquals(exercise.getTemperature().getTemperatureMin(), (short) 3); assertEquals(exercise.getTemperature().getTemperatureAVG(), (short) 4); assertEquals(exercise.getTemperature().getTemperatureMax(), (short) 15); assertEquals(exercise.getEnergy(), 418); assertEquals(exercise.getEnergyTotal(), 23508); assertEquals(exercise.getSumExerciseTime(), (55 * 60) + 21); assertEquals(exercise.getSumRideTime(), (41 * 60) + 45); assertEquals(exercise.getOdometer(), 993); // check heart rate limits assertEquals(exercise.getHeartRateLimits().length, 3); assertTrue(exercise.getHeartRateLimits()[0].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[0].getLowerHeartRate(), (short) 120); assertEquals(exercise.getHeartRateLimits()[0].getUpperHeartRate(), (short) 155); assertEquals(exercise.getHeartRateLimits()[0].getTimeBelow(), (0 * 60 * 60) + (2 * 60) + 4); assertEquals(exercise.getHeartRateLimits()[0].getTimeWithin(), (0 * 60 * 60) + (45 * 60) + 21); assertEquals(exercise.getHeartRateLimits()[0].getTimeAbove(), (0 * 60 * 60) + (3 * 60) + 57); assertTrue(exercise.getHeartRateLimits()[1].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[1].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[1].getUpperHeartRate(), (short) 160); assertEquals(exercise.getHeartRateLimits()[1].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 1); assertEquals(exercise.getHeartRateLimits()[1].getTimeWithin(), (0 * 60 * 60) + (48 * 60) + 51); assertEquals(exercise.getHeartRateLimits()[1].getTimeAbove(), (0 * 60 * 60) + (2 * 60) + 30); assertTrue(exercise.getHeartRateLimits()[2].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[2].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[2].getUpperHeartRate(), (short) 160); assertEquals(exercise.getHeartRateLimits()[2].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 1); assertEquals(exercise.getHeartRateLimits()[2].getTimeWithin(), (0 * 60 * 60) + (48 * 60) + 51); assertEquals(exercise.getHeartRateLimits()[2].getTimeAbove(), (0 * 60 * 60) + (2 * 60) + 30); // check lap data (first, one from middle and last lap only) assertEquals(exercise.getLapList().length, 4); assertEquals(exercise.getLapList()[0].getTimeSplit(), (0 * 60 * 60 * 10) + (20 * 60 * 10) + (34 * 10) + 6); assertEquals(exercise.getLapList()[0].getHeartRateSplit(), (short) 143); assertEquals(exercise.getLapList()[0].getHeartRateAVG(), (short) 141); assertEquals(exercise.getLapList()[0].getHeartRateMax(), (short) 232); assertEquals(Math.round(exercise.getLapList()[0].getSpeed().getSpeedEnd() * 10), 206); assertEquals(Math.round(exercise.getLapList()[0].getSpeed().getSpeedAVG() * 10), 230); assertEquals(exercise.getLapList()[0].getSpeed().getDistance(), 7886); assertEquals(exercise.getLapList()[0].getSpeed().getCadence(), (short) 0); assertEquals(exercise.getLapList()[0].getAltitude().getAltitude(), (short) 273); assertEquals(exercise.getLapList()[0].getAltitude().getAscent(), 73); assertEquals(exercise.getLapList()[0].getTemperature().getTemperature(), (short) 3); assertEquals(exercise.getLapList()[1].getTimeSplit(), (0 * 60 * 60 * 10) + (46 * 60 * 10) + (51 * 10) + 2); assertEquals(exercise.getLapList()[1].getHeartRateSplit(), (short) 129); assertEquals(exercise.getLapList()[1].getHeartRateAVG(), (short) 133); assertEquals(exercise.getLapList()[1].getHeartRateMax(), (short) 160); assertEquals(Math.round(exercise.getLapList()[1].getSpeed().getSpeedEnd() * 10), 353); assertEquals(Math.round(exercise.getLapList()[1].getSpeed().getSpeedAVG() * 10), 253); assertEquals(exercise.getLapList()[1].getSpeed().getDistance(), 18990); assertEquals(exercise.getLapList()[1].getSpeed().getCadence(), (short) 0); assertEquals(exercise.getLapList()[1].getAltitude().getAltitude(), (short) 248); assertEquals(exercise.getLapList()[1].getAltitude().getAscent(), 146); assertEquals(exercise.getLapList()[1].getTemperature().getTemperature(), (short) 3); assertEquals(exercise.getLapList()[3].getTimeSplit(), (0 * 60 * 60 * 10) + (51 * 60 * 10) + (22 * 10) + 6); assertEquals(exercise.getLapList()[3].getHeartRateSplit(), (short) 116); assertEquals(exercise.getLapList()[3].getHeartRateAVG(), (short) 119); assertEquals(exercise.getLapList()[3].getHeartRateMax(), (short) 125); assertEquals(Math.round(exercise.getLapList()[3].getSpeed().getSpeedEnd() * 10), 0); assertEquals(Math.round(exercise.getLapList()[3].getSpeed().getSpeedAVG() * 10), 0); assertEquals(exercise.getLapList()[3].getSpeed().getDistance(), 20921); assertEquals(exercise.getLapList()[3].getSpeed().getCadence(), (short) 0); assertEquals(exercise.getLapList()[3].getAltitude().getAltitude(), (short) 239); assertEquals(exercise.getLapList()[3].getAltitude().getAscent(), 152); assertEquals(exercise.getLapList()[3].getTemperature().getTemperature(), (short) 4); // check sample data (first, two from middle and last only) assertEquals(exercise.getSampleList().length, 206); assertEquals(0, exercise.getSampleList()[0].getTimestamp()); assertEquals(exercise.getSampleList()[0].getHeartRate(), (short) 83); assertEquals(exercise.getSampleList()[0].getAltitude(), (short) 221); assertEquals(Math.round(exercise.getSampleList()[0].getSpeed() * 10), 0 * 10); assertEquals(exercise.getSampleList()[0].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[0].getDistance(), 0); assertEquals(100 * 15 * 1000, exercise.getSampleList()[100].getTimestamp()); assertEquals(exercise.getSampleList()[100].getHeartRate(), (short) 124); assertEquals(exercise.getSampleList()[100].getAltitude(), (short) 270); assertEquals(Math.round(exercise.getSampleList()[100].getSpeed() * 10), 350); assertEquals(exercise.getSampleList()[100].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[100].getDistance(), 9972); assertEquals(200 * 15 * 1000, exercise.getSampleList()[200].getTimestamp()); assertEquals(exercise.getSampleList()[200].getHeartRate(), (short) 138); assertEquals(exercise.getSampleList()[200].getAltitude(), (short) 242); assertEquals(Math.round(exercise.getSampleList()[200].getSpeed() * 10), 291); assertEquals(exercise.getSampleList()[200].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[200].getDistance(), 20451); assertEquals(205 * 15 * 1000, exercise.getSampleList()[205].getTimestamp()); assertEquals(exercise.getSampleList()[205].getHeartRate(), (short) 113); assertEquals(exercise.getSampleList()[205].getAltitude(), (short) 239); assertEquals(Math.round(exercise.getSampleList()[205].getSpeed() * 10), 0); assertEquals(exercise.getSampleList()[205].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[205].getDistance(), 20921); } /** * This method tests the parser with an running exercise file * recorded in metric units from Polar S710. * This test is taken from the C# test class so the code could be better :-) */ @Test public void testParseS710RunningExerciseWithMetricUnits() throws EVException { // parse exercise file EVExercise exercise = parser.parseExercise("misc/testdata/s710/running-metric.srd"); // check exercise data assertEquals(exercise.getFileType(), EVExercise.ExerciseFileType.S710RAW); assertEquals("Polar S6xx/S7xx Series", exercise.getDeviceName()); assertEquals(LocalDateTime.of(2002, 12, 25, 10, 21, 4), exercise.getDateTime()); assertEquals(exercise.getType(), "ExeSet2"); assertEquals(exercise.getRecordingMode().isAltitude(), true); assertEquals(exercise.getRecordingMode().isSpeed(), false); assertEquals(exercise.getRecordingMode().isCadence(), false); assertEquals(exercise.getRecordingMode().isPower(), false); assertEquals(exercise.getRecordingMode().getBikeNumber(), (byte) 0); assertEquals(exercise.getDuration(), (0 * 60 * 60 * 10) + (42 * 60 * 10) + 24 * 10 + 7); assertEquals(exercise.getRecordingInterval(), (short) 15); assertEquals(exercise.getHeartRateAVG(), (short) 148); assertEquals(exercise.getHeartRateMax(), (short) 159); assertEquals(exercise.getSpeed(), null); assertEquals(exercise.getCadence(), null); assertEquals(exercise.getAltitude().getAltitudeMin(), (short) 86); assertEquals(exercise.getAltitude().getAltitudeAVG(), (short) 93); assertEquals(exercise.getAltitude().getAltitudeMax(), (short) 101); assertEquals(exercise.getTemperature().getTemperatureMin(), (short) 18); assertEquals(exercise.getTemperature().getTemperatureAVG(), (short) 21); assertEquals(exercise.getTemperature().getTemperatureMax(), (short) 27); assertEquals(exercise.getEnergy(), 399); assertEquals(exercise.getEnergyTotal(), 30058); assertEquals(exercise.getSumExerciseTime(), (72 * 60) + 7); assertEquals(exercise.getSumRideTime(), (51 * 60) + 54); assertEquals(exercise.getOdometer(), 1200); // check heart rate limits assertEquals(exercise.getHeartRateLimits().length, 3); assertTrue(exercise.getHeartRateLimits()[0].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[0].getLowerHeartRate(), (short) 130); assertEquals(exercise.getHeartRateLimits()[0].getUpperHeartRate(), (short) 150); assertEquals(exercise.getHeartRateLimits()[0].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 54); assertEquals(exercise.getHeartRateLimits()[0].getTimeWithin(), (0 * 60 * 60) + (30 * 60) + 36); assertEquals(exercise.getHeartRateLimits()[0].getTimeAbove(), (0 * 60 * 60) + (10 * 60) + 54); assertTrue(exercise.getHeartRateLimits()[1].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[1].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[1].getUpperHeartRate(), (short) 160); assertEquals(exercise.getHeartRateLimits()[1].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 4); assertEquals(exercise.getHeartRateLimits()[1].getTimeWithin(), (0 * 60 * 60) + (42 * 60) + 20); assertEquals(exercise.getHeartRateLimits()[1].getTimeAbove(), (0 * 60 * 60) + (0 * 60) + 0); assertTrue(exercise.getHeartRateLimits()[2].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[2].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[2].getUpperHeartRate(), (short) 160); assertEquals(exercise.getHeartRateLimits()[2].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 4); assertEquals(exercise.getHeartRateLimits()[2].getTimeWithin(), (0 * 60 * 60) + (42 * 60) + 20); assertEquals(exercise.getHeartRateLimits()[2].getTimeAbove(), (0 * 60 * 60) + (0 * 60) + 0); // check lap data (one lap only) assertEquals(exercise.getLapList().length, 1); assertEquals(exercise.getLapList()[0].getTimeSplit(), (0 * 60 * 60 * 10) + (42 * 60 * 10) + (24 * 10) + 7); assertEquals(exercise.getLapList()[0].getHeartRateSplit(), (short) 146); assertEquals(exercise.getLapList()[0].getHeartRateAVG(), (short) 148); assertEquals(exercise.getLapList()[0].getHeartRateMax(), (short) 159); assertEquals(exercise.getLapList()[0].getSpeed(), null); assertEquals(exercise.getLapList()[0].getAltitude().getAltitude(), (short) 88); assertEquals(exercise.getLapList()[0].getAltitude().getAscent(), 20); assertEquals(exercise.getLapList()[0].getTemperature().getTemperature(), (short) 19); // check sample data (first, two from middle and last only) assertEquals(exercise.getSampleList().length, 170); assertEquals(0 * 15 * 1000, exercise.getSampleList()[0].getTimestamp()); assertEquals(exercise.getSampleList()[0].getHeartRate(), (short) 0); assertEquals(exercise.getSampleList()[0].getAltitude(), (short) 91); assertEquals(exercise.getSampleList()[0].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[0].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[0].getDistance(), 0); assertEquals(100 * 15 * 1000, exercise.getSampleList()[100].getTimestamp()); assertEquals(exercise.getSampleList()[100].getHeartRate(), (short) 149); assertEquals(exercise.getSampleList()[100].getAltitude(), (short) 98); assertEquals(exercise.getSampleList()[100].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[100].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[100].getDistance(), 0); assertEquals(150 * 15 * 1000, exercise.getSampleList()[150].getTimestamp()); assertEquals(exercise.getSampleList()[150].getHeartRate(), (short) 142); assertEquals(exercise.getSampleList()[150].getAltitude(), (short) 89); assertEquals(exercise.getSampleList()[150].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[150].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[150].getDistance(), 0); assertEquals(169 * 15 * 1000, exercise.getSampleList()[169].getTimestamp()); assertEquals(exercise.getSampleList()[169].getHeartRate(), (short) 147); assertEquals(exercise.getSampleList()[169].getAltitude(), (short) 88); assertEquals(exercise.getSampleList()[169].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[169].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[169].getDistance(), 0); } /** * This method tests the parser with an cycling exercise file * recorded in metric units from Polar S725. * This test is taken from the C# test class so the code could be better :-) */ @Test public void testParseS725CyclingExerciseWithMetricUnits() throws EVException { // parse exercise file EVExercise exercise = parser.parseExercise("misc/testdata/s725/cycling-metric.srd"); // check exercise data assertEquals(exercise.getFileType(), EVExercise.ExerciseFileType.S710RAW); assertEquals("Polar S6xx/S7xx Series", exercise.getDeviceName()); assertEquals(LocalDateTime.of(2005, 4, 16, 9, 56, 32), exercise.getDateTime()); assertEquals(exercise.getType(), "ExeSet1"); assertEquals(exercise.getRecordingMode().isAltitude(), true); assertEquals(exercise.getRecordingMode().isSpeed(), true); assertEquals(exercise.getRecordingMode().isCadence(), false); assertEquals(exercise.getRecordingMode().isPower(), false); assertEquals(exercise.getRecordingMode().getBikeNumber(), (byte) 1); assertEquals(exercise.getDuration(), (5 * 60 * 60 * 10) + (9 * 60 * 10) + 58 * 10 + 5); assertEquals(exercise.getRecordingInterval(), (short) 5); assertEquals(exercise.getHeartRateAVG(), (short) 134); assertEquals(exercise.getHeartRateMax(), (short) 232); // recording error due to electric tram assertEquals(Math.round(exercise.getSpeed().getSpeedAVG() * 10), 246); assertEquals(Math.round(exercise.getSpeed().getSpeedMax() * 10), 1103); // recording error due to electric tram assertEquals(exercise.getSpeed().getDistance(), 111700); assertEquals(exercise.getCadence(), null); assertEquals(exercise.getAltitude().getAltitudeMin(), (short) 174); assertEquals(exercise.getAltitude().getAltitudeAVG(), (short) 276); assertEquals(exercise.getAltitude().getAltitudeMax(), (short) 403); assertEquals(exercise.getTemperature().getTemperatureMin(), (short) 19); assertEquals(exercise.getTemperature().getTemperatureAVG(), (short) 22); assertEquals(exercise.getTemperature().getTemperatureMax(), (short) 33); assertEquals(exercise.getEnergy(), 2344); assertEquals(exercise.getEnergyTotal(), 2344); // first recorded exercise, so the sums are low assertEquals(exercise.getSumExerciseTime(), (5 * 60) + 9); assertEquals(exercise.getSumRideTime(), (4 * 60) + 32); assertEquals(exercise.getOdometer(), 111); // check heart rate limits assertEquals(exercise.getHeartRateLimits().length, 3); assertTrue(exercise.getHeartRateLimits()[0].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[0].getLowerHeartRate(), (short) 120); assertEquals(exercise.getHeartRateLimits()[0].getUpperHeartRate(), (short) 155); assertEquals(exercise.getHeartRateLimits()[0].getTimeBelow(), (1 * 60 * 60) + (0 * 60) + 55); assertEquals(exercise.getHeartRateLimits()[0].getTimeWithin(), (3 * 60 * 60) + (59 * 60) + 21); assertEquals(exercise.getHeartRateLimits()[0].getTimeAbove(), (0 * 60 * 60) + (9 * 60) + 42); assertTrue(exercise.getHeartRateLimits()[1].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[1].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[1].getUpperHeartRate(), (short) 160); assertEquals(exercise.getHeartRateLimits()[1].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 0); assertEquals(exercise.getHeartRateLimits()[1].getTimeWithin(), (0 * 60 * 60) + (0 * 60) + 0); assertEquals(exercise.getHeartRateLimits()[1].getTimeAbove(), (0 * 60 * 60) + (0 * 60) + 0); assertTrue(exercise.getHeartRateLimits()[2].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[2].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[2].getUpperHeartRate(), (short) 160); assertEquals(exercise.getHeartRateLimits()[2].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 0); assertEquals(exercise.getHeartRateLimits()[2].getTimeWithin(), (0 * 60 * 60) + (0 * 60) + 0); assertEquals(exercise.getHeartRateLimits()[2].getTimeAbove(), (0 * 60 * 60) + (0 * 60) + 0); // check lap data (just 2 laps) assertEquals(exercise.getLapList().length, 2); assertEquals(exercise.getLapList()[0].getTimeSplit(), (2 * 60 * 60 * 10) + (24 * 60 * 10) + (19 * 10) + 9); assertEquals(exercise.getLapList()[0].getHeartRateSplit(), (short) 122); assertEquals(exercise.getLapList()[0].getHeartRateAVG(), (short) 133); assertEquals(exercise.getLapList()[0].getHeartRateMax(), (short) 229); assertEquals(Math.round(exercise.getLapList()[0].getSpeed().getSpeedEnd() * 10), 0 * 10); assertEquals(Math.round(exercise.getLapList()[0].getSpeed().getSpeedAVG() * 10), 202); assertEquals(exercise.getLapList()[0].getSpeed().getDistance(), 48600); assertEquals(exercise.getLapList()[0].getSpeed().getCadence(), (short) 0); assertEquals(exercise.getLapList()[0].getAltitude().getAltitude(), (short) 392); assertEquals(exercise.getLapList()[0].getAltitude().getAscent(), 675); assertEquals(exercise.getLapList()[0].getTemperature().getTemperature(), (short) 20); assertEquals(exercise.getLapList()[1].getTimeSplit(), (5 * 60 * 60 * 10) + (9 * 60 * 10) + (58 * 10) + 5); assertEquals(exercise.getLapList()[1].getHeartRateSplit(), (short) 123); assertEquals(exercise.getLapList()[1].getHeartRateAVG(), (short) 135); assertEquals(exercise.getLapList()[1].getHeartRateMax(), (short) 232); assertEquals(Math.round(exercise.getLapList()[1].getSpeed().getSpeedEnd() * 10), 38); assertEquals(Math.round(exercise.getLapList()[1].getSpeed().getSpeedAVG() * 10), 229); assertEquals(exercise.getLapList()[1].getSpeed().getDistance(), 111700); assertEquals(exercise.getLapList()[1].getSpeed().getCadence(), (short) 0); assertEquals(exercise.getLapList()[1].getAltitude().getAltitude(), (short) 244); assertEquals(exercise.getLapList()[1].getAltitude().getAscent(), 1255); assertEquals(exercise.getLapList()[1].getTemperature().getTemperature(), (short) 25); // check sample data (first, two from middle and last only) assertEquals(exercise.getSampleList().length, 3720); assertEquals(0, exercise.getSampleList()[0].getTimestamp()); assertEquals(exercise.getSampleList()[0].getHeartRate(), (short) 81); assertEquals(exercise.getSampleList()[0].getAltitude(), (short) 219); assertEquals(Math.round(exercise.getSampleList()[0].getSpeed() * 10), 0 * 10); assertEquals(exercise.getSampleList()[0].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[0].getDistance(), 0); assertEquals(1020 * 5 * 1000, exercise.getSampleList()[1020].getTimestamp()); assertEquals(exercise.getSampleList()[1020].getHeartRate(), (short) 134); assertEquals(exercise.getSampleList()[1020].getAltitude(), (short) 190); assertEquals(Math.round(exercise.getSampleList()[1020].getSpeed() * 10), 246); assertEquals(exercise.getSampleList()[1020].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[1020].getDistance(), 30927); assertEquals(2880 * 5 * 1000, exercise.getSampleList()[2880].getTimestamp()); assertEquals(exercise.getSampleList()[2880].getHeartRate(), (short) 131); assertEquals(exercise.getSampleList()[2880].getAltitude(), (short) 276); assertEquals(Math.round(exercise.getSampleList()[2880].getSpeed() * 10), 383); assertEquals(exercise.getSampleList()[2880].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[2880].getDistance(), 79820); assertEquals(3719 * 5 * 1000, exercise.getSampleList()[3719].getTimestamp()); assertEquals(exercise.getSampleList()[3719].getHeartRate(), (short) 123); assertEquals(exercise.getSampleList()[3719].getAltitude(), (short) 243); assertEquals(Math.round(exercise.getSampleList()[3719].getSpeed() * 10), 54); assertEquals(exercise.getSampleList()[3719].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[3719].getDistance(), 111700); } /** * This method tests the parser with an no-speed (same as running) exercise * file recorded in metric units from Polar S725. * This test is taken from the C# test class so the code could be better :-) */ @Test public void testParseS725NoSpeedExerciseWithMetricUnits() throws EVException { // parse exercise file EVExercise exercise = parser.parseExercise("misc/testdata/s725/nospeed-metric.srd"); // check exercise data assertEquals(exercise.getFileType(), EVExercise.ExerciseFileType.S710RAW); assertEquals("Polar S6xx/S7xx Series", exercise.getDeviceName()); assertEquals(LocalDateTime.of(2005, 4, 17, 8, 59, 3), exercise.getDateTime()); assertEquals(exercise.getType(), "ExeSet1"); assertEquals(exercise.getRecordingMode().isAltitude(), true); assertEquals(exercise.getRecordingMode().isSpeed(), false); assertEquals(exercise.getRecordingMode().isCadence(), false); assertEquals(exercise.getRecordingMode().isPower(), false); assertEquals(exercise.getRecordingMode().getBikeNumber(), (byte) 0); assertEquals(exercise.getDuration(), (2 * 60 * 60 * 10) + (29 * 60 * 10) + 1 * 10 + 9); assertEquals(exercise.getRecordingInterval(), (short) 5); assertEquals(exercise.getHeartRateAVG(), (short) 112); assertEquals(exercise.getHeartRateMax(), (short) 147); assertEquals(exercise.getSpeed(), null); assertEquals(exercise.getCadence(), null); assertEquals(exercise.getAltitude().getAltitudeMin(), (short) 142); assertEquals(exercise.getAltitude().getAltitudeAVG(), (short) 186); assertEquals(exercise.getAltitude().getAltitudeMax(), (short) 284); assertEquals(exercise.getTemperature().getTemperatureMin(), (short) 16); assertEquals(exercise.getTemperature().getTemperatureAVG(), (short) 18); assertEquals(exercise.getTemperature().getTemperatureMax(), (short) 27); assertEquals(exercise.getEnergy(), 806); assertEquals(exercise.getEnergyTotal(), 3150); assertEquals(exercise.getSumExerciseTime(), (7 * 60) + 38); assertEquals(exercise.getSumRideTime(), (4 * 60) + 32); assertEquals(exercise.getOdometer(), 111); // check heart rate limits assertEquals(exercise.getHeartRateLimits().length, 3); assertTrue(exercise.getHeartRateLimits()[0].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[0].getLowerHeartRate(), (short) 120); assertEquals(exercise.getHeartRateLimits()[0].getUpperHeartRate(), (short) 155); assertEquals(exercise.getHeartRateLimits()[0].getTimeBelow(), (1 * 60 * 60) + (43 * 60) + 51); assertEquals(exercise.getHeartRateLimits()[0].getTimeWithin(), (0 * 60 * 60) + (44 * 60) + 59); assertEquals(exercise.getHeartRateLimits()[0].getTimeAbove(), (0 * 60 * 60) + (0 * 60) + 0); assertTrue(exercise.getHeartRateLimits()[1].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[1].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[1].getUpperHeartRate(), (short) 160); assertEquals(exercise.getHeartRateLimits()[1].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 7); // ==> shoudn't this be 0 ? assertEquals(exercise.getHeartRateLimits()[1].getTimeWithin(), (0 * 60 * 60) + (0 * 60) + 0); assertEquals(exercise.getHeartRateLimits()[1].getTimeAbove(), (0 * 60 * 60) + (0 * 60) + 0); assertTrue(exercise.getHeartRateLimits()[2].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[2].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[2].getUpperHeartRate(), (short) 160); assertEquals(exercise.getHeartRateLimits()[2].getTimeBelow(), (0 * 60 * 60) + (0 * 60) + 4); // ==> shoudn't this be 0 ? assertEquals(exercise.getHeartRateLimits()[2].getTimeWithin(), (0 * 60 * 60) + (0 * 60) + 0); assertEquals(exercise.getHeartRateLimits()[2].getTimeAbove(), (0 * 60 * 60) + (0 * 60) + 0); // check lap data (first and last lap only) assertEquals(exercise.getLapList().length, 3); assertEquals(exercise.getLapList()[0].getTimeSplit(), (1 * 60 * 60 * 10) + (31 * 60 * 10) + (8 * 10) + 8); assertEquals(exercise.getLapList()[0].getHeartRateSplit(), (short) 70); assertEquals(exercise.getLapList()[0].getHeartRateAVG(), (short) 112); assertEquals(exercise.getLapList()[0].getHeartRateMax(), (short) 147); assertEquals(exercise.getLapList()[0].getSpeed(), null); assertEquals(exercise.getLapList()[0].getAltitude().getAltitude(), (short) 174); assertEquals(exercise.getLapList()[0].getAltitude().getAscent(), 160); assertEquals(exercise.getLapList()[0].getTemperature().getTemperature(), (short) 17); assertEquals(exercise.getLapList()[2].getTimeSplit(), (2 * 60 * 60 * 10) + (29 * 60 * 10) + (1 * 10) + 9); assertEquals(exercise.getLapList()[2].getHeartRateSplit(), (short) 86); assertEquals(exercise.getLapList()[2].getHeartRateAVG(), (short) 117); assertEquals(exercise.getLapList()[2].getHeartRateMax(), (short) 142); assertEquals(exercise.getLapList()[2].getSpeed(), null); assertEquals(exercise.getLapList()[2].getAltitude().getAltitude(), (short) 281); assertEquals(exercise.getLapList()[2].getAltitude().getAscent(), 315); assertEquals(exercise.getLapList()[2].getTemperature().getTemperature(), (short) 21); // check sample data (first, two from middle and last only) assertEquals(exercise.getSampleList().length, 1789); assertEquals(0, exercise.getSampleList()[0].getTimestamp()); assertEquals(exercise.getSampleList()[0].getHeartRate(), (short) 76); assertEquals(exercise.getSampleList()[0].getAltitude(), (short) 274); assertEquals(exercise.getSampleList()[0].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[0].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[0].getDistance(), 0); assertEquals(720 * 5 * 1000, exercise.getSampleList()[720].getTimestamp()); assertEquals(exercise.getSampleList()[720].getHeartRate(), (short) 125); assertEquals(exercise.getSampleList()[720].getAltitude(), (short) 202); assertEquals(exercise.getSampleList()[720].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[720].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[720].getDistance(), 0); assertEquals(1440 * 5 * 1000, exercise.getSampleList()[1440].getTimestamp()); assertEquals(exercise.getSampleList()[1440].getAltitude(), (short) 143); assertEquals(exercise.getSampleList()[1440].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[1440].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[1440].getDistance(), 0); assertEquals(1788 * 5 * 1000, exercise.getSampleList()[1788].getTimestamp()); assertEquals(exercise.getSampleList()[1788].getHeartRate(), (short) 86); assertEquals(exercise.getSampleList()[1788].getAltitude(), (short) 281); assertEquals(exercise.getSampleList()[1788].getSpeed(), 0f, 0f); assertEquals(exercise.getSampleList()[1788].getCadence(), (short) 0); assertEquals(exercise.getSampleList()[1788].getDistance(), 0); } /** * This method tests the parser with an no-speed (same as running) exercise * file recorded in metric units from Polar S725. * This test is taken from the C# test class so the code could be better :-) */ @Test public void testParseS625PercentualHeartRateRanges() throws EVException { // parse exercise file EVExercise exercise = parser.parseExercise("misc/testdata/s625x/20080224T113030-percentual_ranges.srd"); assertEquals("Polar S6xx/S7xx Series", exercise.getDeviceName()); // check exercise data (only the relevant heartrate range values) assertEquals(exercise.getHeartRateAVG(), (short) 146); assertEquals(exercise.getHeartRateMax(), (short) 177); // check heart rate limits assertEquals(exercise.getHeartRateLimits().length, 3); assertFalse(exercise.getHeartRateLimits()[0].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[0].getLowerHeartRate(), (short) 70); assertEquals(exercise.getHeartRateLimits()[0].getUpperHeartRate(), (short) 80); assertFalse(exercise.getHeartRateLimits()[1].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[1].getLowerHeartRate(), (short) 80); assertEquals(exercise.getHeartRateLimits()[1].getUpperHeartRate(), (short) 90); assertFalse(exercise.getHeartRateLimits()[2].isAbsoluteRange()); assertEquals(exercise.getHeartRateLimits()[2].getLowerHeartRate(), (short) 90); assertEquals(exercise.getHeartRateLimits()[2].getUpperHeartRate(), (short) 100); // check some lap data assertEquals(exercise.getLapList().length, 12); assertEquals(exercise.getLapList()[0].getHeartRateSplit(), (short) 141); assertEquals(exercise.getLapList()[10].getHeartRateSplit(), (short) 130); // check some sample data assertEquals(exercise.getSampleList()[0].getHeartRate(), (short) 116); assertEquals(exercise.getSampleList()[10].getHeartRate(), (short) 135); } }