From fb5d1d3d847bca7110fce0f1b1a12de39650701c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20Perrin?= Date: Sun, 7 Mar 2021 19:42:38 +0000 Subject: [PATCH] Add unit-tests --- pom.xml | 34 ++++- test/tim/prune/data/TestRangeStats.java | 172 ++++++++++++++++++++++++ 2 files changed, 199 insertions(+), 7 deletions(-) create mode 100644 test/tim/prune/data/TestRangeStats.java diff --git a/pom.xml b/pom.xml index 2cb4193..c7d70c6 100644 --- a/pom.xml +++ b/pom.xml @@ -44,12 +44,25 @@ j3dutils ${j3dutils.version} + + org.junit.jupiter + junit-jupiter-engine + 5.7.1 + test + + + org.junit.jupiter + junit-jupiter-api + 5.7.1 + test + ${project.build.directory}/classes ${project.artifactId}_${project.version} - ${project.basedir}/ + ${project.basedir}/src + ${project.basedir}/test ${project.basedir}/src/ @@ -79,11 +92,11 @@ maven-compiler-plugin 3.8.0 - - - -Xlint:deprecation - - + + + -Xlint:deprecation + + maven-jar-plugin @@ -132,7 +145,14 @@ ${app.mainClass} - + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + diff --git a/test/tim/prune/data/TestRangeStats.java b/test/tim/prune/data/TestRangeStats.java new file mode 100644 index 0000000..1493895 --- /dev/null +++ b/test/tim/prune/data/TestRangeStats.java @@ -0,0 +1,172 @@ +package tim.prune; + +import tim.prune.data.DataPoint; +import tim.prune.data.Field; +import tim.prune.data.FieldList; +import tim.prune.data.RangeStats; +import tim.prune.data.TimestampUtc; +import tim.prune.data.Track; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; + +public class TestRangeStats { + @Test + void movingTime() { + Track track = new Track(); + DataPoint[] points = { + new DataPoint( + new String[] { + "01-Jan-2020 00:00:00", + }, + new FieldList(new Field[] { + Field.TIMESTAMP, + }), + null), + new DataPoint( + new String[] { + "01-Jan-2020 00:00:05", + }, + new FieldList(new Field[] { + Field.TIMESTAMP, + }), + null), + }; + track.appendPoints(points); + + RangeStats range = new RangeStats(track, 0, track.getNumPoints() - 1); + assertEquals(5, range.getMovingDurationInSeconds()); + assertEquals(5, range.getTotalDurationInSeconds()); + assertFalse(range.getTimestampsIncomplete()); + assertFalse(range.getTimestampsOutOfSequence()); + } + + @Test + void movingTimeWithGap() { + Track track = new Track(); + DataPoint[] points = { + new DataPoint( + new String[] { + "01-Jan-2020 00:00:00", + }, + new FieldList(new Field[] { + Field.TIMESTAMP, + }), + null), + new DataPoint( + new String[] {}, + new FieldList(new Field[] {}), + null), + new DataPoint( + new String[] { + "01-Jan-2020 00:00:05", + }, + new FieldList(new Field[] { + Field.TIMESTAMP, + }), + null), + }; + track.appendPoints(points); + + RangeStats range = new RangeStats(track, 0, track.getNumPoints() - 1); + assertEquals(5, range.getMovingDurationInSeconds()); + assertEquals(5, range.getTotalDurationInSeconds()); + assertTrue(range.getTimestampsIncomplete()); + assertFalse(range.getTimestampsOutOfSequence()); + } + + @Test + void movingTimeSeveralSegments() { + Track track = new Track(); + DataPoint[] points = { + new DataPoint( + new String[] { + "01-Jan-2020 00:01:00", + }, + new FieldList(new Field[] { + Field.TIMESTAMP, + }), + null), + new DataPoint( + new String[] {}, + new FieldList(new Field[] {}), + null), + new DataPoint( + new String[] { + "01-Jan-2020 00:01:05", + }, + new FieldList(new Field[] { + Field.TIMESTAMP, + }), + null), + // start a second segment + new DataPoint( + new String[] { + "01-Jan-2020 00:00:20", + "1", + }, + new FieldList(new Field[] { + Field.TIMESTAMP, + Field.NEW_SEGMENT, + }), + null), + new DataPoint( + new String[] { + "01-Jan-2020 00:00:27", + }, + new FieldList(new Field[] { + Field.TIMESTAMP, + }), + null), + }; + track.appendPoints(points); + + RangeStats range = new RangeStats(track, 0, track.getNumPoints() - 1); + assertEquals(5 + 7, range.getMovingDurationInSeconds()); + assertEquals(45, range.getTotalDurationInSeconds()); + assertTrue(range.getEarliestTimestamp().isEqual(new TimestampUtc("01-Jan-2020 00:00:20"))); + assertTrue(range.getLatestTimestamp().isEqual(new TimestampUtc("01-Jan-2020 00:01:05"))); + assertTrue(range.getTimestampsIncomplete()); + + // even though segment 2 is earlier than segment 1, timestamps + // within each segment are normally ordered + assertFalse(range.getTimestampsOutOfSequence()); + } + + @Test + void movingTimeMissingFirstTimestamp() { + Track track = new Track(); + DataPoint[] points = { + new DataPoint( + new String[] {}, + new FieldList(new Field[] {}), + null), + new DataPoint( + new String[] { + "01-Jan-2020 00:00:00", + }, + new FieldList(new Field[] { + Field.TIMESTAMP, + }), + null), + new DataPoint( + new String[] { + "01-Jan-2020 00:00:05", + }, + new FieldList(new Field[] { + Field.TIMESTAMP, + }), + null), + }; + track.appendPoints(points); + + RangeStats range = new RangeStats(track, 0, track.getNumPoints() - 1); + assertEquals(5, range.getMovingDurationInSeconds()); + assertEquals(5, range.getTotalDurationInSeconds()); + assertTrue(range.getTimestampsIncomplete()); + assertFalse(range.getTimestampsOutOfSequence()); + } + +} -- 2.43.0