public function testGetNewRatingsBlackExpertBeatsBeginner() { $white = new Participant(); $white->setRating(1000); $white->setScore(AbstractEloCalculator::LOSE); $black = new Participant(); $black->setRating(2500); $black->setScore(AbstractEloCalculator::WIN); $eloCalculator = new IccEloCalculator(); list($newRatingWhite, $newRatingBlack) = $eloCalculator->getNewRatings($white, $black); $this->assertSame(999, $newRatingWhite); $this->assertSame(2500, $newRatingBlack); }
public function testGetNewRatingsExpertBeatsBeginner() { $participantA = new Participant(); $participantA->setRating(2500); $participantA->setScore(AbstractEloCalculator::WIN); $participantB = new Participant(); $participantB->setRating(1000); $participantB->setScore(AbstractEloCalculator::LOSE); $eloCalculator = new EloCalculator(32); list($newRatingA, $newRatingB) = $eloCalculator->getNewRatings($participantA, $participantB); $this->assertSame(2500, $newRatingA); $this->assertSame(999, $newRatingB); }
/** * @dataProvider getNewRatingsData */ public function testGetNewRatings($ratingA, $ratingB, $result, $expectedNewRatingA, $expectedNewRatingB, EloCalculatorInterface $eloCalculator) { if ($result === AbstractEloCalculator::WIN) { $scoreA = AbstractEloCalculator::WIN; $scoreB = AbstractEloCalculator::LOSE; } elseif ($result === AbstractEloCalculator::LOSE) { $scoreA = AbstractEloCalculator::LOSE; $scoreB = AbstractEloCalculator::WIN; } else { $scoreA = AbstractEloCalculator::DRAW; $scoreB = AbstractEloCalculator::DRAW; } $participantA = new Participant(); $participantA->setRating($ratingA); $participantA->setScore($scoreA); $participantB = new Participant(); $participantB->setRating($ratingB); $participantB->setScore($scoreB); list($newRatingA, $newRatingB) = $eloCalculator->getNewRatings($participantA, $participantB); $this->assertSame($expectedNewRatingA, $newRatingA); $this->assertSame($expectedNewRatingB, $newRatingB); }