public function testAddGetRemove()
 {
     $pays = $this->repository->getPays();
     $region = new Region($pays, 82, 'Rhône-Alpes');
     $departement = new Departement($region, 38, 'Isère');
     $commune = new Commune($departement, 'ZE', 'Grenoble');
     $arrondissementCommunal = new ArrondissementCommunal($commune, 'ZE', 'Test');
     $circonscriptionLeg = new CirconscriptionLegislative($departement, 2);
     $circonscriptionEur = new CirconscriptionEuropeenne($pays, 1, 'Sud-Ouest');
     $this->repository->add($arrondissementCommunal);
     $this->repository->add($circonscriptionLeg);
     $this->repository->add($circonscriptionEur);
     $this->repository->save();
     // L'id peut avoir changer donc on teste juste le nom.
     $this->assertEquals($region->getNom(), $this->repository->getRegion(82)->getNom());
     $this->assertEquals($departement->getNom(), $this->repository->getDepartement(38)->getNom());
     $this->assertEquals($commune->getNom(), $this->repository->getCommune(38, 'ZE')->getNom());
     $this->assertEquals($arrondissementCommunal->getNom(), $this->repository->getArrondissementCommunal($commune, 'ZE')->getNom());
     $this->assertEquals($circonscriptionLeg->getCode(), $this->repository->getCirconscriptionLegislative(38, 2)->getCode());
     $this->assertEquals($circonscriptionEur->getNom(), $this->repository->getCirconscriptionEuropeenne('Sud-Ouest')->getNom());
     $this->assertEquals($circonscriptionEur->getNom(), $this->repository->getCirconscriptionEuropeenne(1)->getNom());
     $this->assertEquals('France', $this->repository->getPays()->getNom());
     // On teste remove
     $this->repository->remove($this->repository->getRegion(82));
     $this->repository->save();
     // Si on utilise assertNull, en cas d'échec du test, phpUnit fait un
     // var_dump ce qui pose problème lorsqu'il y a des associations
     // d'entités cycliques.
     $this->assertTrue(null === $this->repository->getRegion(82));
     $this->assertTrue(null === $this->repository->getDepartement(38));
     $this->assertTrue(null === $this->repository->getCommune(38, 'ZE'));
     $this->assertTrue(null === $this->repository->getArrondissementCommunal($commune, 'ZE'));
 }
 public function testHasCodeAndNomAndPays()
 {
     $pays = new Pays('France');
     $region = new Region($pays, 11, 'Île-de-France');
     $this->assertEquals(11, $region->getCode());
     $this->assertEquals('Île-de-France', $region->getNom());
     $this->assertEquals($pays, $region->getPays());
 }
 /**
  * Constructeur d'objet département.
  *
  * @param Region $region La région du département.
  * @param string $code   Le code du département.
  * @param string $nom    Le nom du département.
  */
 public function __construct(Region $region, $code, $nom)
 {
     \Assert\that((string) $code)->string()->maxLength(4, 'Le code du département ne peut dépasser 4 caractères.');
     \Assert\that($nom)->string()->maxLength(255, 'Le nom du déparement de peut dépasser 255 caractères.');
     $this->code = (string) $code;
     $this->nom = $nom;
     $this->region = $region;
     $region->addDepartement($this);
     $this->communes = new ArrayCollection();
     $this->circonscriptionsLegislatives = new ArrayCollection();
 }
 public function testSetSurCircoAndGetHigherScore()
 {
     $date = new \DateTime();
     $echeance = new Echeance($date, Echeance::CANTONALES);
     $pays = new Pays();
     $region = new Region($pays, 11, 'Île-de-France');
     $circoEuro = new CirconscriptionEuropeenne($pays, 1, 'Test');
     $region->setCirconscriptionEuropeenne($circoEuro);
     $circoEuro->addRegion($region);
     $departement = new Departement($region, 93, 'Seine-Saint-Denis');
     $departement2 = new Departement($region, 92, 'Hauts-de-Seine');
     $commune2 = new Commune($departement2, 20, 'Jesaispas');
     $this->territoireRepository->add($departement);
     $this->territoireRepository->add($commune2);
     $this->territoireRepository->add($region);
     $this->territoireRepository->add($circoEuro);
     $election = new ElectionUninominale($echeance, $departement);
     $election2 = new ElectionUninominale($echeance, $commune2);
     $candidat = new PersonneCandidate($election, 'FG', 'Naël', 'Ferret');
     $election->addCandidat($candidat);
     $candidat2 = new PersonneCandidate($election2, 'PG', 'Lea', 'Ferret');
     $election2->addCandidat($candidat2);
     $candidat3 = new PersonneCandidate($election2, 'FG', 'Leo', 'Ferret');
     $election2->addCandidat($candidat3);
     $voteInfo1 = new VoteInfo(1000, 900, 800);
     $election->setVoteInfo($voteInfo1);
     $voteInfo2 = new VoteInfo(100, 90, 80);
     $election2->setVoteInfo($voteInfo2);
     $election->setVoixCandidat(400, $candidat);
     $election2->setVoixCandidat(50, $candidat2);
     $election2->setVoixCandidat(10, $candidat3);
     $this->electionRepository->add($election);
     $this->electionRepository->add($election2);
     $this->electionRepository->save();
     $score = $this->electionRepository->getScore($echeance, $region, array($candidat, $candidat2, $candidat3));
     $scoreEuro = $this->electionRepository->getScore($echeance, $circoEuro, array($candidat, $candidat2, $candidat3));
     $this->assertEquals($score, $scoreEuro);
     $this->assertEquals(460, $score->toVoix());
     $this->assertTrue(abs(52.27 - $score->toPourcentage()) < 0.01);
     $score = $this->electionRepository->getScore($echeance, $region, new CandidatNuanceSpecification(array('FG', 'PG')));
     $scoreEuro = $this->electionRepository->getScore($echeance, $circoEuro, new CandidatNuanceSpecification(array('FG', 'PG')));
     $pays = $this->territoireRepository->getPays();
     $scorePays = $this->electionRepository->getScore($echeance, $pays, new CandidatNuanceSpecification(array('FG', 'PG')));
     $this->assertEquals($score, $scoreEuro);
     $this->assertEquals($score, $scorePays);
     $this->assertEquals(460, $score->toVoix());
     $this->assertTrue(abs(52.27 - $score->toPourcentage()) < 0.01);
 }