mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-21 21:25:38 +00:00
bug5932: deleting old test try
This commit is contained in:
-261
@@ -1,261 +0,0 @@
|
||||
package com.sap.sailing.datamining.impl.components;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardContext;
|
||||
import com.sap.sailing.datamining.data.HasRaceOfCompetitorContext;
|
||||
import com.sap.sailing.datamining.data.HasTackTypeSegmentContext;
|
||||
import com.sap.sailing.datamining.data.HasTrackedRaceContext;
|
||||
import com.sap.sailing.datamining.impl.data.LeaderboardWithContext;
|
||||
import com.sap.sailing.datamining.impl.data.RaceOfCompetitorWithContext;
|
||||
import com.sap.sailing.datamining.impl.data.TrackedRaceWithContext;
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.Course;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.Sideline;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.CompetitorWithBoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.ControlPointWithTwoMarksImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicCompetitorWithBoat;
|
||||
import com.sap.sailing.domain.base.impl.MarkImpl;
|
||||
import com.sap.sailing.domain.base.impl.NationalityImpl;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.base.impl.TeamImpl;
|
||||
import com.sap.sailing.domain.base.impl.WaypointImpl;
|
||||
import com.sap.sailing.domain.common.CompetitorRegistrationType;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.WindImpl;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.common.tracking.impl.GPSFixImpl;
|
||||
import com.sap.sailing.domain.common.tracking.impl.GPSFixMovingImpl;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRuleImpl;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
|
||||
import com.sap.sailing.domain.ranking.RankingMetricConstructor;
|
||||
import com.sap.sailing.domain.regattalog.impl.EmptyRegattaLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl;
|
||||
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.domain.tracking.impl.MarkPassingImpl;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class TestTackTypeSegmentsTest {
|
||||
|
||||
public static DynamicCompetitorWithBoat createCompetitorWithBoat(String competitorName) {
|
||||
final DynamicBoat boat = (DynamicBoat) new BoatImpl("id12345", competitorName + "'s boat",
|
||||
new BoatClassImpl("505", /* typicallyStartsUpwind */ true), /* sailID */ null);
|
||||
return new CompetitorWithBoatImpl(competitorName, competitorName, "KYC", Color.RED, null, null,
|
||||
new TeamImpl("STG",
|
||||
Collections.singleton(new PersonImpl(competitorName, new NationalityImpl("GER"),
|
||||
/* dateOfBirth */ null, "This is famous " + competitorName)),
|
||||
new PersonImpl("Rigo van Maas", new NationalityImpl("NED"), /* dateOfBirth */null,
|
||||
"This is Rigo, the coach")),
|
||||
/* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, /* searchTag */ null,
|
||||
boat);
|
||||
}
|
||||
|
||||
public static DynamicTrackedRaceImpl createTestTrackedRace(String regattaName, String raceName,
|
||||
final String boatClassName, Map<Competitor, Boat> competitorsAndBoats, TimePoint timePointForFixes,
|
||||
boolean useMarkPassingCalculator, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
RankingMetricConstructor rankingMetricConstructor) {
|
||||
final BoatClassImpl boatClass = new BoatClassImpl(boatClassName, /* typicallyStartsUpwind */ true);
|
||||
final Regatta regatta = new RegattaImpl(EmptyRaceLogStore.INSTANCE, EmptyRegattaLogStore.INSTANCE,
|
||||
RegattaImpl.getDefaultName(regattaName, boatClass.getName()), boatClass,
|
||||
/* canBoatsOfCompetitorsChangePerRace */ true, CompetitorRegistrationType.CLOSED, /* startDate */ null,
|
||||
/* endDate */ null, /* trackedRegattaRegistry */ null,
|
||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123", null,
|
||||
/* registrationLinkSecret */ UUID.randomUUID().toString());
|
||||
final TrackedRegatta trackedRegatta = new DynamicTrackedRegattaImpl(regatta);
|
||||
final List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
||||
// create a two-lap upwind/downwind course:
|
||||
final MarkImpl left = new MarkImpl("Left lee gate buoy");
|
||||
final MarkImpl right = new MarkImpl("Right lee gate buoy");
|
||||
final ControlPoint leeGate = new ControlPointWithTwoMarksImpl(left, right, "Lee Gate", "Lee Gate");
|
||||
final Mark windwardMark = new MarkImpl("Windward mark");
|
||||
waypoints.add(new WaypointImpl(leeGate));
|
||||
waypoints.add(new WaypointImpl(windwardMark));
|
||||
waypoints.add(new WaypointImpl(leeGate));
|
||||
waypoints.add(new WaypointImpl(windwardMark));
|
||||
waypoints.add(new WaypointImpl(leeGate));
|
||||
final Course course = new CourseImpl(raceName, waypoints);
|
||||
final RaceDefinition race = new RaceDefinitionImpl(raceName, course, boatClass, competitorsAndBoats);
|
||||
regatta.addRace(race);
|
||||
final DynamicTrackedRaceImpl trackedRace = new DynamicTrackedRaceImpl(trackedRegatta, race,
|
||||
Collections.<Sideline> emptyList(), EmptyWindStore.INSTANCE, /* delayToLiveInMillis */ 0,
|
||||
/* millisecondsOverWhichToAverageWind */ 30000, /* millisecondsOverWhichToAverageSpeed */ 30000,
|
||||
/* delay for wind estimation cache invalidation */ 0, useMarkPassingCalculator,
|
||||
rankingMetricConstructor, raceLogResolver, /* trackingConnectorInfo */ null,
|
||||
/* markPassingRaceFingerprintRegistry */ null);
|
||||
// in this simplified artificial course, the top mark is exactly north of the right leeward gate
|
||||
final DegreePosition topPosition = new DegreePosition(54.48, 10.24);
|
||||
final TimePoint afterTheRace = new MillisecondsTimePoint(timePointForFixes.asMillis() + 36000000); // 10h after the
|
||||
// fix timed
|
||||
trackedRace.setStartTimeReceived(timePointForFixes);
|
||||
trackedRace.setStartOfTrackingReceived(timePointForFixes);
|
||||
|
||||
trackedRace.getOrCreateTrack(left)
|
||||
.addGPSFix(new GPSFixImpl(new DegreePosition(54.4680424, 10.234451), new MillisecondsTimePoint(0)));
|
||||
trackedRace.getOrCreateTrack(right)
|
||||
.addGPSFix(new GPSFixImpl(new DegreePosition(54.4680424, 10.24), new MillisecondsTimePoint(0)));
|
||||
trackedRace.getOrCreateTrack(windwardMark).addGPSFix(new GPSFixImpl(topPosition, new MillisecondsTimePoint(0)));
|
||||
trackedRace.getOrCreateTrack(left)
|
||||
.addGPSFix(new GPSFixImpl(new DegreePosition(54.4680424, 10.234451), afterTheRace));
|
||||
trackedRace.getOrCreateTrack(right)
|
||||
.addGPSFix(new GPSFixImpl(new DegreePosition(54.4680424, 10.24), afterTheRace));
|
||||
trackedRace.getOrCreateTrack(windwardMark).addGPSFix(new GPSFixImpl(topPosition, afterTheRace));
|
||||
trackedRace.recordWind(
|
||||
new WindImpl(topPosition, timePointForFixes,
|
||||
new KnotSpeedWithBearingImpl(/* speedInKnots */14.7, new DegreeBearingImpl(180))),
|
||||
new WindSourceImpl(WindSourceType.WEB));
|
||||
|
||||
return trackedRace;
|
||||
}
|
||||
|
||||
DynamicTrackedRaceImpl trackedRace;
|
||||
DynamicTrackedRaceImpl trackedRace2;
|
||||
CompetitorWithBoat competitor1;
|
||||
CompetitorWithBoat competitor2;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
|
||||
// RENNEN 1
|
||||
competitor1 = createCompetitorWithBoat("C1");
|
||||
competitor2 = createCompetitorWithBoat("C2");
|
||||
final Map<Competitor, Boat> competitorsAndBoats2 = new LinkedHashMap<>();
|
||||
competitorsAndBoats2.put(competitor1, competitor1.getBoat());
|
||||
competitorsAndBoats2.put(competitor2, competitor2.getBoat());
|
||||
|
||||
trackedRace2 = createTestTrackedRace("TestRegatta", "TestRace", "F18", competitorsAndBoats2,
|
||||
MillisecondsTimePoint.now(), /* useMarkPassingCalculator */ true, null,
|
||||
OneDesignRankingMetric::new);
|
||||
|
||||
DynamicGPSFixTrack<Competitor, GPSFixMoving> competitor1Track = trackedRace2.getTrack(competitor1);
|
||||
for (int i=0; i<10;i++) {
|
||||
competitor1Track.addGPSFix(new GPSFixMovingImpl(new DegreePosition(54.4680424+i, 10.234451+i), trackedRace2.getStartOfTracking().plus(i*4),
|
||||
new KnotSpeedWithBearingImpl(10, new DegreeBearingImpl(45))));
|
||||
}
|
||||
|
||||
TimePoint fixTimePoint = new MillisecondsTimePoint(trackedRace2.getStartOfTracking().asMillis());
|
||||
Set<MarkPassing> markPassingForCompetitor = new HashSet<MarkPassing>();
|
||||
int i=0;
|
||||
for (Waypoint waypoint : trackedRace2.getRace().getCourse().getWaypoints()) {
|
||||
if (i++ <= 5) {
|
||||
markPassingForCompetitor.add(new MarkPassingImpl(fixTimePoint, waypoint, competitor1));
|
||||
fixTimePoint = new MillisecondsTimePoint(fixTimePoint.asMillis()+100);
|
||||
}
|
||||
}
|
||||
trackedRace2.updateMarkPassings(competitor1, markPassingForCompetitor);
|
||||
|
||||
// RENNEN 2
|
||||
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
||||
final WaypointImpl wp1 = new WaypointImpl(new MarkImpl("Test Mark 1"));
|
||||
waypoints.add(wp1);
|
||||
final WaypointImpl wp2 = new WaypointImpl(new MarkImpl("Test Mark 2"));
|
||||
waypoints.add(wp2);
|
||||
final WaypointImpl wp3 = new WaypointImpl(new MarkImpl("Test Mark 3"));
|
||||
waypoints.add(wp3);
|
||||
|
||||
CourseImpl course = new CourseImpl("Test Course", waypoints);
|
||||
final BoatClass boatClass = new BoatClassImpl("505", /* upwind start */true);
|
||||
final CompetitorWithBoat hasso = createCompetitorWithBoat("Hasso");
|
||||
final Map<Competitor, Boat> competitorsAndBoats = new HashMap<>();
|
||||
competitorsAndBoats.put(hasso, hasso.getBoat());
|
||||
trackedRace = new DynamicTrackedRaceImpl(
|
||||
/* trackedRegatta */new DynamicTrackedRegattaImpl(new RegattaImpl("test", null, true,
|
||||
CompetitorRegistrationType.CLOSED, null, null, new HashSet<Series>(), false, null, "test", null,
|
||||
OneDesignRankingMetric::new, /* registrationLinkSecret */ UUID.randomUUID().toString())),
|
||||
new RaceDefinitionImpl("Test Race", course, boatClass, competitorsAndBoats),
|
||||
Collections.<Sideline> emptyList(), EmptyWindStore.INSTANCE, /* delayToLiveInMillis */3000,
|
||||
/* millisecondsOverWhichToAverageWind */30000, /* millisecondsOverWhichToAverageSpeed */8000,
|
||||
/* useMarkPassingCalculator */ false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null,
|
||||
/* markPassingRaceFingerprintRegistry */ null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testingMissingMarkPassing() {
|
||||
final Leaderboard leaderboard = new FlexibleLeaderboardImpl("Test",
|
||||
new ThresholdBasedResultDiscardingRuleImpl(new int[0]), new LowPoint(),
|
||||
new CourseAreaImpl("Here", UUID.randomUUID(), /* centerPosition */ null, /* radius */ null));
|
||||
final HasLeaderboardContext leaderboardContext = new LeaderboardWithContext(leaderboard, null);
|
||||
final HasTrackedRaceContext trackedRaceContext = new TrackedRaceWithContext(leaderboardContext,
|
||||
trackedRace2.getTrackedRegatta().getRegatta(), null, null, trackedRace2);
|
||||
final HasRaceOfCompetitorContext raceOfCompContext = new RaceOfCompetitorWithContext(trackedRaceContext, competitor1);
|
||||
// missing + skipped
|
||||
|
||||
// Iterable<HasTackTypeSegmentContext> result = getInstancesOfType(compkeineAhnung,
|
||||
// HasTackTypeSegmentContext.class);
|
||||
//HasTackTypeSegmentContext resultTTSegments = (HasTackTypeSegmentContext) raceOfCompContext;
|
||||
|
||||
final TackTypeSegmentRetrievalProcessor resultTTSegmentsRetrieval = new TackTypeSegmentRetrievalProcessor(null, Collections.emptySet(), null, 0, null);
|
||||
|
||||
final Iterable<HasTackTypeSegmentContext> allTTSegments = resultTTSegmentsRetrieval.retrieveData(raceOfCompContext);
|
||||
Distance sumDistance = null;
|
||||
for (HasTackTypeSegmentContext oneTTSegment : allTTSegments) {
|
||||
sumDistance = sumDistance.add(oneTTSegment.getDistance());
|
||||
}
|
||||
assertTrue(sumDistance == null);
|
||||
assertEquals(null, sumDistance);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testingFixExactOnMarkPassing() {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testingOpenEndedRace() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testingFinishedRace() {
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user