Commit df3b1ed0 authored by Antoine Hazebrouck's avatar Antoine Hazebrouck

etoiles selon les victoires

parent 85b848a9
......@@ -3,6 +3,7 @@ package imt.concours;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
import java.util.Queue;
import java.util.stream.Stream;
......@@ -29,12 +30,13 @@ public class FileConcours {
}
// true is ca a marché, false si le concours actuel est pas bien fini
public boolean passerAuConcoursSuivant() {
public Optional<Chef> passerAuConcoursSuivant() {
if (concoursActuel().estTermine()) {
concoursTermines.add(concours.poll());
return true;
Concours current = concours.poll();
concoursTermines.add(current);
return Optional.of(current.classement().get(0).getChef());
} else {
return false;
return Optional.empty();
}
}
......
......@@ -2,24 +2,28 @@ package imt.personnes;
import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import imt.ingredients.Plat;
import lombok.AccessLevel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Data
public class Chef extends Person {
private final int etoiles;
@Getter(value = AccessLevel.NONE)
private final AtomicInteger victoires;
private final Specialite specialite;
private final Set<Plat> plats;
public Chef(int id, String nom, String prenom, String telephone, Genre genre, int etoiles, Specialite specialite,
public Chef(int id, String nom, String prenom, String telephone, Genre genre, int victoires, Specialite specialite,
Set<Plat> plats) {
super(id, nom, prenom, telephone, genre);
this.etoiles = etoiles;
this.victoires = new AtomicInteger(victoires);
this.specialite = specialite;
this.plats = plats;
}
......@@ -30,4 +34,17 @@ public class Chef extends Person {
return Integer.valueOf(left.getCalories()).compareTo(Integer.valueOf(right.getCalories()));
}).toList();
}
public int getEtoiles() {
int victoires = this.victoires.intValue();
if (victoires < 1) {
return 0;
} else if (victoires < 3) {
return 1;
} else if (victoires < 5) {
return 2;
} else {
return 3;
}
}
}
......@@ -56,15 +56,15 @@ public class FileConcoursTest {
void concours_termines() {
Concours CONCOURS_1 = CONCOURS_1();
FileConcours fileConcours = new FileConcours(CONCOURS_1, CONCOURS_2(), CONCOURS_3());
assertThat(fileConcours.passerAuConcoursSuivant()).isFalse();
forcer_la_fin_du_concours(CONCOURS_1);
assertThat(fileConcours.passerAuConcoursSuivant()).isEmpty();
forcerLaFinDuConcours(CONCOURS_1);
assertThat(fileConcours.passerAuConcoursSuivant()).isTrue();
assertThat(fileConcours.passerAuConcoursSuivant()).isPresent();
assertThat(fileConcours.concoursTermines()).isEqualTo(List.of(CONCOURS_1));
}
void forcer_la_fin_du_concours(Concours concours) {
public static void forcerLaFinDuConcours(Concours concours) {
assertThat(concours.estTermine()).isFalse();
concours.noter(PROPOSITION_1, 10);
concours.noter(PROPOSITION_2, 20);
......@@ -80,9 +80,9 @@ public class FileConcoursTest {
Concours CONCOURS_2 = CONCOURS_2();
FileConcours fileConcours = new FileConcours(CONCOURS_1, CONCOURS_2, CONCOURS_3());
forcer_la_fin_du_concours(CONCOURS_1);
forcerLaFinDuConcours(CONCOURS_1);
fileConcours.passerAuConcoursSuivant();
forcer_la_fin_du_concours(CONCOURS_2);
forcerLaFinDuConcours(CONCOURS_2);
fileConcours.passerAuConcoursSuivant();
assertThat(fileConcours.concoursAuquelAParticipe(CHEF_1)).isEqualTo(List.of(CONCOURS_1, CONCOURS_2));
......
package imt.personnes;
import static imt.concours.ConcoursTest.CHEF_1;
import static imt.concours.FileConcoursTest.CONCOURS_1;
import static imt.concours.FileConcoursTest.CONCOURS_2;
import static imt.concours.FileConcoursTest.CONCOURS_3;
import static imt.concours.FileConcoursTest.forcerLaFinDuConcours;
import static imt.ingredients.IngredientTest.AUTRE;
import static imt.ingredients.IngredientTest.OIGNON;
import static imt.ingredients.IngredientTest.STEAK;
......@@ -10,6 +15,8 @@ import java.util.Set;
import org.junit.jupiter.api.Test;
import imt.concours.Concours;
import imt.concours.FileConcours;
import imt.ingredients.Ingredient;
import imt.ingredients.Plat;
......@@ -34,4 +41,38 @@ public class ChefTest {
plat2
));
}
@Test
void augmentation_d_etoiles_pour_une_victoire() {
Concours CONCOURS_1 = CONCOURS_1();
Concours CONCOURS_2 = CONCOURS_2();
FileConcours fileConcours = new FileConcours(CONCOURS_1, CONCOURS_2, CONCOURS_3());
forcerLaFinDuConcours(CONCOURS_1);
Chef gagnant = fileConcours.passerAuConcoursSuivant().get();
// assertThat(gagnant).isEqualTo(CHEF_1);
// assertThat(CHEF_1.getEtoiles()).isEqualTo(1);
// TODO
assertThat(false).isTrue();
}
@Test
void etoiles_selon_victoires() {
Chef zeroEtoile = new Chef(1, "null", "null", "null", Genre.HOMME, 0, null, null);
assertThat(zeroEtoile.getEtoiles()).isZero();
Chef uneEtoile = new Chef(1, "null", "null", "null", Genre.HOMME, 1, null, null);
assertThat(uneEtoile.getEtoiles()).isOne();
Chef deuxEtoiles = new Chef(1, "null", "null", "null", Genre.HOMME, 3, null, null);
assertThat(deuxEtoiles.getEtoiles()).isEqualTo(2);
Chef troisEtoile = new Chef(1, "null", "null", "null", Genre.HOMME, 5, null, null);
assertThat(troisEtoile.getEtoiles()).isEqualTo(3);
}
}
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