mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-04 10:09:42 +00:00
bug5932: working test 42m
This commit is contained in:
1 parent
ae0e374b60
commit
c6096ea916
2 files changed
+89
-70
No files matched your search
@@ -14,5 +14,6 @@ Require-Bundle: org.mockito.mockito-core;bundle-version="4.8.1",
|
||||
com.sap.sse.common,
|
||||
org.objenesis;bundle-version="2.1.0",
|
||||
net.bytebuddy.byte-buddy;bundle-version="1.12.18",
|
||||
net.bytebuddy.byte-buddy-agent;bundle-version="1.12.18"
|
||||
net.bytebuddy.byte-buddy-agent;bundle-version="1.12.18",
|
||||
com.sap.sailing.domain.test
|
||||
Automatic-Module-Name: com.sap.sailing.datamining.test
|
||||
+87
-69
@@ -2,94 +2,112 @@ package com.sap.sailing.datamining.impl.components;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.HashSet;
|
||||
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.datamining.shared.TackTypeSegmentsDataMiningSettings;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.CompetitorImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.NationalityImpl;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
import com.sap.sailing.domain.base.impl.TeamImpl;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.GPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sse.common.Color;
|
||||
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.ranking.OneDesignRankingMetric;
|
||||
import com.sap.sailing.domain.test.StoredTrackBasedTest;
|
||||
import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
|
||||
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.impl.DegreeBearingImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class TestSegmentsTackType extends StoredTrackBasedTest {
|
||||
|
||||
DynamicTrackedRaceImpl trackedRace;
|
||||
CompetitorWithBoat competitorA;
|
||||
|
||||
public class TestTackTypeSegments {
|
||||
TrackedRace trackedRace;
|
||||
GPSFixTrack<Competitor, GPSFixMoving> track;
|
||||
Competitor competitor;
|
||||
|
||||
@Before
|
||||
public void setup () {
|
||||
Map<Competitor, Boat> competitors = new HashMap<>();
|
||||
Competitor competitor = new CompetitorImpl(UUID.randomUUID(), "testPerson", "HP", Color.RED, null, null, new TeamImpl("STG", Collections.singleton(
|
||||
new PersonImpl("testPerson", new NationalityImpl("GER"),
|
||||
/* dateOfBirth */null, "This is famous " + "testPerson")), new PersonImpl("Rigo van Maas",
|
||||
new NationalityImpl("NED"),
|
||||
/* dateOfBirth */null, "This is Rigo, the coach")),
|
||||
/* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null);
|
||||
DynamicBoat boat = new BoatImpl(competitor.getId(), "testPerson" + "'s boat", null, null, null);
|
||||
competitors.put(competitor, boat);
|
||||
public void setup() {
|
||||
competitorA = createCompetitorWithBoat("A");
|
||||
trackedRace = createTestTrackedRace("TestRegatta", "TestRace", "F18", createCompetitorAndBoatsMap(competitorA),
|
||||
MillisecondsTimePoint.now(), /* useMarkPassingCalculator */ true, null,
|
||||
OneDesignRankingMetric::new);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void testingMissingMarkPassing () {
|
||||
|
||||
final HasRaceOfCompetitorContext element = Mockito.mock(HasRaceOfCompetitorContext.class);
|
||||
final TrackedRaceWithContext trackedRaceContext = Mockito.mock(TrackedRaceWithContext.class);
|
||||
final TackTypeSegmentRetrievalProcessor resultTTSegmentsRetrieval = Mockito.mock(TackTypeSegmentRetrievalProcessor.class);
|
||||
|
||||
|
||||
when(element.getTrackedRaceContext()).thenReturn(trackedRaceContext);
|
||||
when(element.getCompetitor()).thenReturn(competitor);
|
||||
when(trackedRaceContext.getTrackedRace().getTrack(element.getCompetitor())).thenReturn(track);
|
||||
|
||||
|
||||
//vorhandene segmente in liste und distanzen zusammenrechnen
|
||||
Iterable<HasTackTypeSegmentContext> allTTSegments = resultTTSegmentsRetrieval.retrieveData(element);
|
||||
Distance sum=null;
|
||||
for (HasTackTypeSegmentContext oneTTSegment : allTTSegments) {
|
||||
sum = sum.add(oneTTSegment.getDistance());
|
||||
DynamicGPSFixTrack<Competitor, GPSFixMoving> competitorATrack = trackedRace.getTrack(competitorA);
|
||||
GPSFixMovingImpl currentGPS = new GPSFixMovingImpl(new DegreePosition(54.4680424, 10.234451), trackedRace.getStartOfTracking().plus(10),
|
||||
new KnotSpeedWithBearingImpl(10, new DegreeBearingImpl(45)));
|
||||
for (int i=0; i<20;i++) {
|
||||
competitorATrack.addGPSFix(currentGPS);
|
||||
Position currentPosition = currentGPS.getSpeed().travelTo(currentGPS.getPosition(), currentGPS.getTimePoint(), currentGPS.getTimePoint().plus(490));
|
||||
currentGPS = new GPSFixMovingImpl (currentPosition, currentGPS.getTimePoint().plus(240),
|
||||
new KnotSpeedWithBearingImpl(10, new DegreeBearingImpl(45)));
|
||||
}
|
||||
// Distance sum2 = null;
|
||||
// result.forEach(currentcase -> sum2.add(currentcase.getDistance()));
|
||||
//
|
||||
//ergebnis der distanzen checken
|
||||
assertTrue(sum==null);
|
||||
assertEquals(null, sum);
|
||||
TimePoint fixTimePoint = new MillisecondsTimePoint(trackedRace.getStartOfTracking().asMillis());
|
||||
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);
|
||||
}
|
||||
//missing + skipped
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void testingFixExactOnMarkPassing () {
|
||||
public void testingMissingMarkPassing() {
|
||||
// missing + skipped
|
||||
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,
|
||||
trackedRace.getTrackedRegatta().getRegatta(), null, null, trackedRace);
|
||||
final HasRaceOfCompetitorContext raceOfCompContext = new RaceOfCompetitorWithContext(trackedRaceContext, competitorA);
|
||||
final TackTypeSegmentRetrievalProcessor resultTTSegmentsRetrieval = new TackTypeSegmentRetrievalProcessor(null, Collections.emptySet(), TackTypeSegmentsDataMiningSettings.createDefaultSettings(), 0, null);
|
||||
final Iterable<HasTackTypeSegmentContext> allTTSegments = resultTTSegmentsRetrieval.retrieveData(raceOfCompContext);
|
||||
Distance sumDistance = new NullDistance();
|
||||
for (HasTackTypeSegmentContext oneTTSegment : allTTSegments) {
|
||||
if (oneTTSegment != null) {
|
||||
sumDistance = sumDistance.add(oneTTSegment.getDistance());
|
||||
}
|
||||
}
|
||||
assertTrue(sumDistance == null);
|
||||
assertEquals(null, sumDistance);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testingOpenEndedRace () {}
|
||||
|
||||
public void testingFixExactOnMarkPassing() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testingFinishedRace () {}
|
||||
|
||||
|
||||
}
|
||||
public void testingOpenEndedRace() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testingFinishedRace() {
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user