fixed bug 1260; testTotalRankComparatorForOrderedSplitFleetsWhoseOrderingDoesNotPersist is green

This commit is contained in:
Axel Uhl committed 2014-02-12 01:51:13 +01:00
1 parent 29a804c8d3
commit 4f014fd92e
2 files changed
+13 -3

No files matched your search

@@ -1173,7 +1173,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest {
double scoreInFinalRace = 10.0; double scoreInFinalRace = 10.0;
for (Competitor rankedCompetitor : leaderboard.getCompetitorsFromBestToWorst(f1Column, later)) { for (Competitor rankedCompetitor : leaderboard.getCompetitorsFromBestToWorst(f1Column, later)) {
assertEquals(scoreInFinalRace, leaderboard.getTotalPoints(rankedCompetitor, f1Column, later), 0.000001); assertEquals(scoreInFinalRace, leaderboard.getTotalPoints(rankedCompetitor, f1Column, later), 0.000001);
scoreInFinalRace = Math.max(scoreInFinalRace-1, 0); scoreInFinalRace = Math.max(scoreInFinalRace-1, 1);
} }
double lastScore = Double.MAX_VALUE; double lastScore = Double.MAX_VALUE;
// assert that only the points matter for ranking; not the fleet assignment // assert that only the points matter for ranking; not the fleet assignment
@@ -26,11 +26,21 @@ public abstract class HighPointFirstGetsFixedScore extends HighPoint {
@Override @Override
public Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, Callable<Integer> numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { public Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, Callable<Integer> numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) {
Double result; final int effectiveRank;
final Double result;
int competitorFleetOrdering;
if (rank == 0) { if (rank == 0) {
effectiveRank = 0;
} else if (raceColumn.hasSplitFleetContiguousScoring() && (competitorFleetOrdering=raceColumn.getFleetOfCompetitor(competitor).getOrdering()) != 0) {
int numberOfCompetitorsInBetterFleets = getNumberOfCompetitorsInBetterFleets(raceColumn, competitorFleetOrdering);
effectiveRank = rank + numberOfCompetitorsInBetterFleets;
} else {
effectiveRank = rank;
}
if (effectiveRank == 0) {
result = null; result = null;
} else { } else {
result = Math.max(1.0, (double) (scoreForRaceWinner - rank + 1)); result = Math.max(1.0, (double) (scoreForRaceWinner - effectiveRank + 1));
} }
return result; return result;
} }