From e25b7724bb465924f67e55e23709a2c72ad25907 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 7 Apr 2023 11:05:19 +0200 Subject: [PATCH] bug5715: fixed one of the tests which now passes --- ...dRankingForLowPointThreeMedalWinsTest.java | 2 +- .../impl/LowPointFirstToWinThreeRaces.java | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingForLowPointThreeMedalWinsTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingForLowPointThreeMedalWinsTest.java index f8e259355e4..1d4ea70106e 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingForLowPointThreeMedalWinsTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingForLowPointThreeMedalWinsTest.java @@ -305,7 +305,7 @@ public class LeaderboardScoringAndRankingForLowPointThreeMedalWinsTest extends L assertRanksBasedOnOpeningSeriesRanking(/* zeroBasedRankOfCompetitorWithBetterOpeningSeriesScore */ 6, betterOfA3AndA4AfterOpeningSeries, semiFinalists.getB().get(1), openingSeriesRankResult, rankResultsAfterSemifinals); - assertRanksBasedOnOpeningSeriesRanking(/* zeroBasedRankOfCompetitorWithBetterOpeningSeriesScore */ 6, + assertRanksBasedOnOpeningSeriesRanking(/* zeroBasedRankOfCompetitorWithBetterOpeningSeriesScore */ 8, worseOfA3AndA4AfterOpeningSeries, semiFinalists.getB().get(2), openingSeriesRankResult, rankResultsAfterSemifinals); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointFirstToWinThreeRaces.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointFirstToWinThreeRaces.java index 4b8737408c7..27db21cb07d 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointFirstToWinThreeRaces.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointFirstToWinThreeRaces.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.Set; import java.util.function.BiFunction; import java.util.function.Function; +import java.util.function.Supplier; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Fleet; @@ -124,9 +125,9 @@ public class LowPointFirstToWinThreeRaces extends LowPoint { final Iterable openingSeriesRaceColumns = getOpeningSeriesRaceColumns(leaderboard); // pass on the totalPointsSupplier coming from the caller, most likely a LeaderboardTotalRankComparator, // to speed up / save the total points (re-)calculation - final LeaderboardTotalRankComparator openingSeriesTotalRankComparator = new LeaderboardTotalRankComparator( + final Supplier openingSeriesTotalRankComparator = ()->new LeaderboardTotalRankComparator( leaderboard, timePoint, this, nullScoresAreBetter, openingSeriesRaceColumns, - totalPointsSupplier, cache); + totalPointsSupplier, cache); // TODO turn into supplier for lazy evaluation; it may not be needed in all cases if (o1MedalFleet == o2MedalFleet) { result = compareByInMedalSeriesFleetRules(o1, o2, totalPointsSupplier, medalSeriesInWhichBothScored, openingSeriesTotalRankComparator, nullScoresAreBetter, leaderboard, timePoint, cache); @@ -140,7 +141,7 @@ public class LowPointFirstToWinThreeRaces extends LowPoint { result = Integer.compare(o1RankInMedalSeriesFleet, o2RankInMedalSeriesFleet); if (result == 0) { // - then by opening series rank - result = openingSeriesTotalRankComparator.compare(o1, o2); + result = openingSeriesTotalRankComparator.get().compare(o1, o2); } } } @@ -150,7 +151,7 @@ public class LowPointFirstToWinThreeRaces extends LowPoint { private int getRankInMedalSeriesFleet(Series medalSeries, Fleet medalFleet, BiFunction totalPointsSupplier, Competitor competitor, - final LeaderboardTotalRankComparator openingSeriesTotalRankComparator, RaceColumn firstNonCarryRaceColumnInMedalSeries, + final Supplier openingSeriesTotalRankComparator, RaceColumn firstNonCarryRaceColumnInMedalSeries, boolean nullScoresAreBetter, Leaderboard leaderboard, TimePoint timePoint, WindLegTypeAndLegBearingAndORCPerformanceCurveCache cache) { final List competitorsInMedalFleet = Util.asList(firstNonCarryRaceColumnInMedalSeries.getAllCompetitors(medalFleet)); @@ -168,10 +169,11 @@ public class LowPointFirstToWinThreeRaces extends LowPoint { *
  • The opening series rank
  • * */ - private int compareByInMedalSeriesFleetRules(Competitor o1, Competitor o2, BiFunction totalPointsSupplier, - final Series medalSeriesInWhichBothScored, final LeaderboardTotalRankComparator openingSeriesTotalRankComparator, boolean nullScoresAreBetter, - Leaderboard leaderboard, - TimePoint timePoint, WindLegTypeAndLegBearingAndORCPerformanceCurveCache cache) { + private int compareByInMedalSeriesFleetRules(Competitor o1, Competitor o2, + BiFunction totalPointsSupplier, final Series medalSeriesInWhichBothScored, + final Supplier openingSeriesTotalRankComparator, + boolean nullScoresAreBetter, Leaderboard leaderboard, TimePoint timePoint, + WindLegTypeAndLegBearingAndORCPerformanceCurveCache cache) { int result; final int numberOfMedalRacesWonO1 = Util.stream(medalSeriesInWhichBothScored.getRaceColumns()) .mapToInt(raceColumn -> getWinCount(leaderboard, o1, raceColumn, @@ -192,7 +194,7 @@ public class LowPointFirstToWinThreeRaces extends LowPoint { result = compareByScoresFromLastToFirstRace(medalSeriesInWhichBothScored.getRaceColumns(), o1, o2, totalPointsSupplier, nullScoresAreBetter); if (result == 0) { // - then by opening series rank - result = openingSeriesTotalRankComparator.compare(o1, o2); + result = openingSeriesTotalRankComparator.get().compare(o1, o2); } } return result;