Commit 0b4b8797 authored by Antoine Hazebrouck's avatar Antoine Hazebrouck

immutable chef incr etoiles

parent df3b1ed0
...@@ -32,9 +32,12 @@ public class FileConcours { ...@@ -32,9 +32,12 @@ public class FileConcours {
// true is ca a marché, false si le concours actuel est pas bien fini // true is ca a marché, false si le concours actuel est pas bien fini
public Optional<Chef> passerAuConcoursSuivant() { public Optional<Chef> passerAuConcoursSuivant() {
if (concoursActuel().estTermine()) { if (concoursActuel().estTermine()) {
Concours current = concours.poll(); Concours concoursActuel = concours.poll();
concoursTermines.add(current); concoursTermines.add(concoursActuel);
return Optional.of(current.classement().get(0).getChef());
Chef gagnant = concoursActuel.classement().get(0).getChef().incrementVictoires();
return Optional.of(gagnant);
} else { } else {
return Optional.empty(); return Optional.empty();
} }
......
...@@ -2,28 +2,24 @@ package imt.personnes; ...@@ -2,28 +2,24 @@ package imt.personnes;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import imt.ingredients.Plat; import imt.ingredients.Plat;
import lombok.AccessLevel;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString; import lombok.ToString;
@ToString(callSuper = true) @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
public class Chef extends Person { public class Chef extends Person {
@Getter(value = AccessLevel.NONE) private final int victoires;
private final AtomicInteger victoires;
private final Specialite specialite; private final Specialite specialite;
private final Set<Plat> plats; private final Set<Plat> plats;
public Chef(int id, String nom, String prenom, String telephone, Genre genre, int victoires, Specialite specialite, public Chef(int id, String nom, String prenom, String telephone, Genre genre, int victoires, Specialite specialite,
Set<Plat> plats) { Set<Plat> plats) {
super(id, nom, prenom, telephone, genre); super(id, nom, prenom, telephone, genre);
this.victoires = new AtomicInteger(victoires); this.victoires = victoires;
this.specialite = specialite; this.specialite = specialite;
this.plats = plats; this.plats = plats;
} }
...@@ -36,7 +32,6 @@ public class Chef extends Person { ...@@ -36,7 +32,6 @@ public class Chef extends Person {
} }
public int getEtoiles() { public int getEtoiles() {
int victoires = this.victoires.intValue();
if (victoires < 1) { if (victoires < 1) {
return 0; return 0;
} else if (victoires < 3) { } else if (victoires < 3) {
...@@ -47,4 +42,8 @@ public class Chef extends Person { ...@@ -47,4 +42,8 @@ public class Chef extends Person {
return 3; return 3;
} }
} }
public Chef incrementVictoires() {
return new Chef(getId(), getNom(), getPrenom(), getTelephone(), getGenre(), getVictoires() + 1, getSpecialite(), getPlats());
}
} }
...@@ -23,7 +23,7 @@ public class ConcoursTest { ...@@ -23,7 +23,7 @@ public class ConcoursTest {
public static Jury JURY_2 = new Jury(2, "nom2", "prenom2", "06", Genre.HOMME); public static Jury JURY_2 = new Jury(2, "nom2", "prenom2", "06", Genre.HOMME);
public static Jury JURY_3 = new Jury(3, "nom3", "prenom3", "06", Genre.HOMME); public static Jury JURY_3 = new Jury(3, "nom3", "prenom3", "06", Genre.HOMME);
public static Chef CHEF_1 = new Chef(1, "chef1", "prenomchef1", "07", Genre.HOMME, 2, Specialite.PATISSIER, public static Chef CHEF_1 = new Chef(1, "chef1", "prenomchef1", "07", Genre.HOMME, 0, Specialite.PATISSIER,
Set.of(new Plat(1, "plat1", new Ingredient[] {}))); Set.of(new Plat(1, "plat1", new Ingredient[] {})));
public static Chef chef2 = new Chef(2, "chef2", "prenomchef2", "07", Genre.HOMME, 2, Specialite.PATISSIER, public static Chef chef2 = new Chef(2, "chef2", "prenomchef2", "07", Genre.HOMME, 2, Specialite.PATISSIER,
Set.of(new Plat(2, "plat2", new Ingredient[] {}))); Set.of(new Plat(2, "plat2", new Ingredient[] {})));
......
...@@ -47,14 +47,16 @@ public class ChefTest { ...@@ -47,14 +47,16 @@ public class ChefTest {
Concours CONCOURS_1 = CONCOURS_1(); Concours CONCOURS_1 = CONCOURS_1();
Concours CONCOURS_2 = CONCOURS_2(); Concours CONCOURS_2 = CONCOURS_2();
FileConcours fileConcours = new FileConcours(CONCOURS_1, CONCOURS_2, CONCOURS_3()); FileConcours fileConcours = new FileConcours(CONCOURS_1, CONCOURS_2, CONCOURS_3());
forcerLaFinDuConcours(CONCOURS_1); forcerLaFinDuConcours(CONCOURS_1);
assertThat(CHEF_1.getEtoiles()).isZero();
Chef gagnant = fileConcours.passerAuConcoursSuivant().get(); Chef gagnant = fileConcours.passerAuConcoursSuivant().get();
// assertThat(gagnant).isEqualTo(CHEF_1); assertThat(gagnant.getId()).isEqualTo(CHEF_1.getId());
// assertThat(CHEF_1.getEtoiles()).isEqualTo(1); assertThat(gagnant.getEtoiles()).isOne();
// TODO
assertThat(false).isTrue();
} }
@Test @Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment