public function testHasDateAndTypeAndTour() { $date = new \DateTime(); $echeance = new Echeance($date, Echeance::CANTONALES, true); $this->assertEquals($date, $echeance->getDate()); $this->assertEquals('Cantonales ' . $date->format('Y') . ' (second tour)', $echeance->getNom()); $this->assertEquals('Cantonales ' . $date->format('Y') . ' (second tour)', $echeance->__toString()); $this->assertTrue($echeance->isSecondTour()); }
/** * Récupérer le nombre de sièges d'un candidat à l'élection. Retourne * null si le calcul est impossible ou le nombre total de sièges est * inconnu. * * @param CandidatInterface $candidat Le candidat. * * @return int Le nombre de sièges. */ public function getSiegesCandidat(CandidatInterface $candidat) { if (!$this->sieges) { return; } if (Echeance::EUROPEENNES === $this->echeance->getType()) { $scores = array(); $candidats = array(); foreach ($this->getCandidats() as $c) { $score = $this->getScoreCandidat($c); for ($i = 1; $i <= $this->sieges; $i++) { if ($score instanceof Score && (null === $score->toPourcentage() || 5 < $score->toPourcentage())) { $scores[] = $score->toVoix() / $i; $candidats[] = $c; } } } arsort($scores); $listeSieges = array_slice($scores, 0, $this->sieges, true); $sieges = 0; foreach ($listeSieges as $key => $score) { if ($candidats[$key] === $candidat) { $sieges++; } } return $sieges; } }