bug5932: refactored first tack type segment test

This commit is contained in:
Axel Uhl
2023-12-27 11:39:50 +01:00
parent f17ee6d5fd
commit a1806a0d02
@@ -2,9 +2,9 @@ package com.sap.sailing.datamining.impl.components;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.List;
import java.util.UUID;
import org.junit.Before;
@@ -38,8 +38,9 @@ import com.sap.sailing.domain.tracking.MarkPassing;
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl;
import com.sap.sailing.domain.tracking.impl.MarkPassingImpl;
import com.sap.sse.common.Distance;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Distance.NullDistance;
import com.sap.sse.common.Duration;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.DegreeBearingImpl;
import com.sap.sse.common.impl.MillisecondsTimePoint;
@@ -55,24 +56,6 @@ public class TestSegmentsTackType extends StoredTrackBasedTest {
trackedRace = createTestTrackedRace("TestRegatta", "TestRace", "F18", createCompetitorAndBoatsMap(competitorA),
MillisecondsTimePoint.now(), /* useMarkPassingCalculator */ true, null,
OneDesignRankingMetric::new);
DynamicGPSFixTrack<Competitor, GPSFixMoving> competitorATrack = trackedRace.getTrack(competitorA);
final KnotSpeedWithBearingImpl sogCog = new KnotSpeedWithBearingImpl(10, new DegreeBearingImpl(45));
GPSFixMovingImpl currentGPS = new GPSFixMovingImpl(new DegreePosition(54.4680424, 10.234451), trackedRace.getStartOfTracking().plus(10), sogCog);
for (int i=0; i<20; i++) {
competitorATrack.addGPSFix(currentGPS);
final Position currentPosition = currentGPS.getSpeed().travelTo(currentGPS.getPosition(), currentGPS.getTimePoint(), currentGPS.getTimePoint().plus(490));
currentGPS = new GPSFixMovingImpl (currentPosition, currentGPS.getTimePoint().plus(240), sogCog);
}
TimePoint fixTimePoint = new MillisecondsTimePoint(trackedRace.getStartOfTracking().asMillis());
final Set<MarkPassing> markPassingForCompetitor = new HashSet<MarkPassing>();
int i=0;
for (Waypoint waypoint : trackedRace.getRace().getCourse().getWaypoints()) {
if (i++ <= 5) {
markPassingForCompetitor.add(new MarkPassingImpl(fixTimePoint, waypoint, competitorA));
fixTimePoint = new MillisecondsTimePoint(fixTimePoint.asMillis() + 1000);
}
}
trackedRace.updateMarkPassings(competitorA, markPassingForCompetitor);
final Leaderboard leaderboard = new FlexibleLeaderboardImpl("Test",
new ThresholdBasedResultDiscardingRuleImpl(new int[0]), new LowPoint(),
new CourseAreaImpl("Here", UUID.randomUUID(), /* centerPosition */ null, /* radius */ null));
@@ -86,6 +69,27 @@ public class TestSegmentsTackType extends StoredTrackBasedTest {
@Test
public void testingSegmentsAreNotNull() {
// set up GPS fixes for competitor, as well as mark passings:
DynamicGPSFixTrack<Competitor, GPSFixMoving> competitorATrack = trackedRace.getTrack(competitorA);
final KnotSpeedWithBearingImpl sogCog = new KnotSpeedWithBearingImpl(10, new DegreeBearingImpl(45));
TimePoint timePoint = trackedRace.getStartOfTracking().plus(10);
GPSFixMovingImpl currentGPS = new GPSFixMovingImpl(new DegreePosition(54.4680424, 10.234451), timePoint, sogCog);
final Duration timeBetweenFixes = Duration.ofMillis(490);
for (int i=0; i<20; i++) {
competitorATrack.addGPSFix(currentGPS);
final Position currentPosition = sogCog.travelTo(currentGPS.getPosition(), timeBetweenFixes);
timePoint = timePoint.plus(timeBetweenFixes);
currentGPS = new GPSFixMovingImpl(currentPosition, timePoint, sogCog);
}
TimePoint markPassingTimePoint = new MillisecondsTimePoint(trackedRace.getStartOfTracking().asMillis());
final List<MarkPassing> markPassingsForCompetitor = new ArrayList<>();
final Duration legDuration = Duration.ofSeconds(60);
for (Waypoint waypoint : trackedRace.getRace().getCourse().getWaypoints()) {
markPassingsForCompetitor.add(new MarkPassingImpl(markPassingTimePoint, waypoint, competitorA));
markPassingTimePoint = markPassingTimePoint.plus(legDuration);
}
trackedRace.updateMarkPassings(competitorA, markPassingsForCompetitor);
// now run the actual test:
Distance sumDistance = new NullDistance();
for (HasTackTypeSegmentContext oneTTSegment : allTTSegments) {
if (oneTTSegment != null) {