@Test
public void referenceBestScore() {
StrategicOscillationByLevelFinalistPodium finalistPodium = new StrategicOscillationByLevelFinalistPodium(true);
DefaultSolverScope solverScope = new DefaultSolverScope();
solverScope.setBestScore(HardSoftScore.valueOf(-200, -5000));
LocalSearchPhaseScope phaseScope = new LocalSearchPhaseScope(solverScope);
LocalSearchStepScope lastCompletedStepScope = new LocalSearchStepScope(phaseScope, -1);
lastCompletedStepScope.setScore(solverScope.getBestScore());
phaseScope.setLastCompletedStepScope(lastCompletedStepScope);
finalistPodium.phaseStarted(phaseScope);
LocalSearchStepScope stepScope0 = new LocalSearchStepScope(phaseScope);
finalistPodium.stepStarted(stepScope0);
LocalSearchMoveScope moveScope0 = buildMoveScope(stepScope0, -100, -7000);
finalistPodium.addMove(buildMoveScope(stepScope0, -150, -2000));
finalistPodium.addMove(moveScope0);
finalistPodium.addMove(buildMoveScope(stepScope0, -100, -7100));
finalistPodium.addMove(buildMoveScope(stepScope0, -200, -1000));
assertSame(moveScope0, finalistPodium.pickMove(stepScope0));
stepScope0.setScore(moveScope0.getScore());
finalistPodium.stepEnded(stepScope0);
phaseScope.setLastCompletedStepScope(stepScope0);
solverScope.setBestScore(stepScope0.getScore());
LocalSearchStepScope stepScope1 = new LocalSearchStepScope(phaseScope);
finalistPodium.stepStarted(stepScope1);
LocalSearchMoveScope moveScope1 = buildMoveScope(stepScope1, -120, -4000);
finalistPodium.addMove(buildMoveScope(stepScope1, -100, -8000));