3 import tim.prune.data.DataPoint;
4 import tim.prune.data.Field;
5 import tim.prune.data.FieldList;
6 import tim.prune.data.RangeStats;
7 import tim.prune.data.TimestampUtc;
8 import tim.prune.data.Track;
10 import org.junit.jupiter.api.Test;
11 import static org.junit.jupiter.api.Assertions.assertEquals;
12 import static org.junit.jupiter.api.Assertions.assertTrue;
13 import static org.junit.jupiter.api.Assertions.assertFalse;
15 public class TestRangeStats {
18 Track track = new Track();
19 DataPoint[] points = {
22 "01-Jan-2020 00:00:00",
24 new FieldList(new Field[] {
30 "01-Jan-2020 00:00:05",
32 new FieldList(new Field[] {
37 track.appendPoints(points);
39 RangeStats range = new RangeStats(track, 0, track.getNumPoints() - 1);
40 assertEquals(5, range.getMovingDurationInSeconds());
41 assertEquals(5, range.getTotalDurationInSeconds());
42 assertFalse(range.getTimestampsIncomplete());
43 assertFalse(range.getTimestampsOutOfSequence());
47 void movingTimeWithGap() {
48 Track track = new Track();
49 DataPoint[] points = {
52 "01-Jan-2020 00:00:00",
54 new FieldList(new Field[] {
60 new FieldList(new Field[] {}),
64 "01-Jan-2020 00:00:05",
66 new FieldList(new Field[] {
71 track.appendPoints(points);
73 RangeStats range = new RangeStats(track, 0, track.getNumPoints() - 1);
74 assertEquals(5, range.getMovingDurationInSeconds());
75 assertEquals(5, range.getTotalDurationInSeconds());
76 assertTrue(range.getTimestampsIncomplete());
77 assertFalse(range.getTimestampsOutOfSequence());
81 void movingTimeSeveralSegments() {
82 Track track = new Track();
83 DataPoint[] points = {
86 "01-Jan-2020 00:01:00",
88 new FieldList(new Field[] {
94 new FieldList(new Field[] {}),
98 "01-Jan-2020 00:01:05",
100 new FieldList(new Field[] {
104 // start a second segment
107 "01-Jan-2020 00:00:20",
110 new FieldList(new Field[] {
117 "01-Jan-2020 00:00:27",
119 new FieldList(new Field[] {
124 track.appendPoints(points);
126 RangeStats range = new RangeStats(track, 0, track.getNumPoints() - 1);
127 assertEquals(5 + 7, range.getMovingDurationInSeconds());
128 assertEquals(45, range.getTotalDurationInSeconds());
129 assertTrue(range.getEarliestTimestamp().isEqual(new TimestampUtc("01-Jan-2020 00:00:20")));
130 assertTrue(range.getLatestTimestamp().isEqual(new TimestampUtc("01-Jan-2020 00:01:05")));
131 assertTrue(range.getTimestampsIncomplete());
133 // even though segment 2 is earlier than segment 1, timestamps
134 // within each segment are normally ordered
135 assertFalse(range.getTimestampsOutOfSequence());
139 void movingTimeMissingFirstTimestamp() {
140 Track track = new Track();
141 DataPoint[] points = {
144 new FieldList(new Field[] {}),
148 "01-Jan-2020 00:00:00",
150 new FieldList(new Field[] {
156 "01-Jan-2020 00:00:05",
158 new FieldList(new Field[] {
163 track.appendPoints(points);
165 RangeStats range = new RangeStats(track, 0, track.getNumPoints() - 1);
166 assertEquals(5, range.getMovingDurationInSeconds());
167 assertEquals(5, range.getTotalDurationInSeconds());
168 assertTrue(range.getTimestampsIncomplete());
169 assertFalse(range.getTimestampsOutOfSequence());