/** * @dataProvider getWinProbabilityData */ public function testGetWinProbability($ratingA, $ratingB, $expectedProbabilityA, $expectedProbabilityB) { $participantA = new Participant(); $participantA->setRating($ratingA); $participantB = new Participant(); $participantB->setRating($ratingB); $eloCalculator = new EloCalculator(32); list($probabilityA, $probabilityB) = $eloCalculator->getWinProbability($participantA, $participantB); $this->assertEquals($expectedProbabilityA, $probabilityA, null, FLOAT_DELTA); $this->assertEquals($expectedProbabilityB, $probabilityB, null, FLOAT_DELTA); }
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); }
/** * @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); }