private function getProvisionalAdjustment(Elo $eloOpponent, $result) { if ($result === 0.5) { $addition = 0; } else { $addition = ($eloOpponent->isProvisional() ? 200 : 400) * $result; } return $addition; }
/** * @test */ public function shouldDetermineEloForNonProvisional() { // given $player = $this->getUserWithNonProvisionalElo(); // when $elo = new Elo($player->getId(), 1); $elo->setElo(1400); $elo->commit(); // then $this->assertFalse($elo->isProvisional()); $opponent = $this->getUserWithElo(1100); $this->assertEquals(1400, $player->getElo(1)); $this->assertEquals(1100, $opponent->getElo(1)); $eloSetter = new EloSetter(1); $eloSetter->registerResult($player, $opponent, 1); // then $elo = new Elo($player->getId(), 1); $this->assertEquals(1405, $elo->getElo()); // when $player = $this->getUserWithNonProvisionalElo(1548); $eloSetter = new EloSetter(1); $eloSetter->registerResult($player, $this->getUserWithElo(1212), 1); $pl = new Player($player->getId()); // then $this->assertEquals(1552, $pl->getElo(1)); }