added hasRaceExecutionOrdersAttached() to TrackedRaceImpl

This commit is contained in:
Alexander Ries committed 2015-06-16 17:51:38 +02:00
1 parent d01cc74c75
commit 50e1dfd5ba
2 files changed
+74 -43

No files matched your search

@@ -1,6 +1,6 @@
package com.sap.sailing.domain.test;
import static org.mockito.Mockito.mock;
import static org.junit.Assert.*;
import java.util.Collections;
import java.util.HashSet;
@@ -14,7 +14,6 @@ import org.junit.Test;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.CourseArea;
import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.base.RaceColumnInSeries;
@@ -26,12 +25,15 @@ import com.sap.sailing.domain.base.impl.FleetImpl;
import com.sap.sailing.domain.base.impl.RegattaImpl;
import com.sap.sailing.domain.base.impl.SeriesImpl;
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
import com.sap.sailing.domain.leaderboard.FlexibleRaceColumn;
import com.sap.sailing.domain.leaderboard.ScoringScheme;
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.tracking.DynamicTrackedRace;
import com.sap.sailing.domain.tracking.RaceExecutionOrderProvider;
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
@@ -40,62 +42,87 @@ import com.sap.sse.common.impl.MillisecondsTimePoint;
*
*/
public class RaceExecutionOrderProvdiderAttachDetachTest extends TrackBasedTest {
RaceExecutionOrderProvider raceExecutionOrderProvider;
FlexibleLeaderboard flexibleLeaderboard;
RaceColumnInSeries raceColumnInSeries;
FlexibleRaceColumn raceColumnFlexibleLeaderboard;
Fleet fleet;
TrackedRaceImpl trackedRace;
Regatta regatta;
Series series;
RaceColumnInSeries raceColumnInSeries;
RaceColumn raceColumn;
Fleet fleet;
FlexibleLeaderboard flexibleLeaderboard;
DynamicTrackedRace dynamicTackedRace;
RaceExecutionOrderProvider raceExecutionOrderProvider;
private final String REGATTA = "TestRegatta";
private final String RACE = "TestRace";
private final String FLEET = "TestFleet";
private final String BOATCLASS = "49er";
private final String RACECOLUMN_SERIES = "SeriesRaceColumn";
private final String RACECOLUMN_FLEXIBLELEADERBOARD = "FlexibleLeadrboarRaceColumn";
@Before
public void setUp() {
final List<Competitor> emptyCompetitorList = Collections.emptyList();
TimePoint now = MillisecondsTimePoint.now();
dynamicTackedRace = createTestTrackedRace("TestRegatta", "TestRace", "TestBoatClass", emptyCompetitorList, now);
raceExecutionOrderProvider = new AbstractRaceExecutionOrderProvider() {
private static final long serialVersionUID = 1L;
@Override
protected Map<Fleet, Iterable<? extends RaceColumn>> getRaceColumnsOfSeries() {
return null;
}
};
TrackedRegattaRegistry trackedRegattaRegistry = mock(TrackedRegattaRegistry.class);
fleet = new FleetImpl("TestFleet");
Series series = createSeries(trackedRegattaRegistry, fleet);
Set<Series> seriesSet = new HashSet<>();
seriesSet.add(series);
BoatClass boatClass = new BoatClassImpl("TestClass", true);
String raceColumnName = "TestRace";
raceColumnInSeries = series.addRaceColumn(raceColumnName, trackedRegattaRegistry);
ScoringScheme scoringScheme = new LowPoint();
regatta = new RegattaImpl(RegattaImpl.getDefaultName("TestRegatta", boatClass.getName()), boatClass,
/* startDate */null, /* endDate */null, seriesSet, false, scoringScheme, UUID.randomUUID(),
mock(CourseArea.class), OneDesignRankingMetric::new);
setUpForAllTestCases();
setUpForFlexibleLeaderboardRaceColumnsTests();
setUpRaceColumnInSeriesTest();
}
// @Test
// public void testRaceExecutionOrderProviderAttachWhenSettingTrackedRaceToRaceCollumn() {
//
// }
//
// @Test
// public void testRaceExecutionOrderProviderDetachWhenReleasingTrackedRaceFromRaceCollumn() {
//
// }
@Test
public void testRaceExecutionOrderProviderAttachWhenSettingTrackedRaceToRaceCollumn() {
flexibleLeaderboard.addRace(trackedRace, RACECOLUMN_FLEXIBLELEADERBOARD, false);
System.out.println(""+trackedRace.hasRaceExecutionOrderProvidersAttached());
assertTrue(trackedRace.hasRaceExecutionOrderProvidersAttached());
}
@Test
public void testRaceExecutionOrderProviderDetachWhenReleasingTrackedRaceFromRaceCollumn() {
flexibleLeaderboard.removeRaceColumn(RACECOLUMN_FLEXIBLELEADERBOARD);
assertFalse(trackedRace.hasRaceExecutionOrderProvidersAttached());
}
@Test
public void testRaceExecutionOrderProviderAttachWhenSettingTrackedRaceToRaceCollumnInSeries() {
raceColumnInSeries.setTrackedRace(fleet, dynamicTackedRace);
raceColumnInSeries.setTrackedRace(fleet, trackedRace);
assertTrue(trackedRace.hasRaceExecutionOrderProvidersAttached());
}
@Test
public void testRaceExecutionOrderProviderDetachWhenReleasingTrackedRaceFromRaceCollumnInSeries() {
raceColumnInSeries.releaseTrackedRace(fleet);
assertFalse(trackedRace.hasRaceExecutionOrderProvidersAttached());
}
private void setUpForAllTestCases(){
final List<Competitor> emptyCompetitorList = Collections.emptyList();
TimePoint now = MillisecondsTimePoint.now();
trackedRace = createTestTrackedRace(REGATTA, RACE, BOATCLASS, emptyCompetitorList, now);
raceExecutionOrderProvider = new AbstractRaceExecutionOrderProvider() {
private static final long serialVersionUID = 1L;
@Override
protected Map<Fleet, Iterable<? extends RaceColumn>> getRaceColumnsOfSeries() {
return Collections.<Fleet, Iterable<? extends RaceColumn>>emptyMap();
}
};
}
private void setUpForFlexibleLeaderboardRaceColumnsTests(){
flexibleLeaderboard = new FlexibleLeaderboardImpl("Kiel Week 2011 505s", new ThresholdBasedResultDiscardingRuleImpl(new int[] { 3, 6 }),
new LowPoint(), null);
}
private void setUpRaceColumnInSeriesTest(){
fleet = new FleetImpl(FLEET);
series = createSeries(null, fleet);
Set<Series> seriesSet = new HashSet<>();
seriesSet.add(series);
BoatClass boatClass = new BoatClassImpl(BOATCLASS, true);
String raceColumnName = RACECOLUMN_SERIES;
raceColumnInSeries = series.addRaceColumn(raceColumnName, null);
ScoringScheme scoringScheme = new LowPoint();
regatta = new RegattaImpl(RegattaImpl.getDefaultName(REGATTA, boatClass.getName()), boatClass,
/* startDate */null, /* endDate */null, seriesSet, false, scoringScheme, UUID.randomUUID(),
null, OneDesignRankingMetric::new);
}
private Series createSeries(TrackedRegattaRegistry trackedRegattaRegistry, Fleet fleet) {
@@ -3105,6 +3105,10 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl
attachedRaceExecutionOrderProviders.remove(raceExecutionOrderProvider);
}
}
public boolean hasRaceExecutionOrderProvidersAttached(){
return !attachedRaceExecutionOrderProviders.isEmpty();
}
private ReadonlyRaceState getRaceState(RaceLog raceLog) {
ReadonlyRaceState result;