コード例 #1
0
ファイル: EloCalculatorTest.php プロジェクト: pdt256/skill
 /**
  * @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);
 }
コード例 #2
0
ファイル: IccEloCalculatorTest.php プロジェクト: pdt256/skill
 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);
 }
コード例 #3
0
 /**
  * @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);
 }