From fb4e3c6c7ce377aed6004319ead39b0a43fa751a Mon Sep 17 00:00:00 2001 From: Paul Gross Date: Mon, 20 Apr 2020 12:38:06 +0200 Subject: [PATCH] Unit tests WinConditionHunter / Shadow --- src/condition/ConditionClassPersonnage.java | 9 +++ src/condition/ConditionStatistiques.java | 20 +++-- src/condition/WinConditionHunter.java | 4 +- src/condition/WinConditionShadow.java | 5 +- src/main/CarteLieu.java | 2 - src/main/Joueur.java | 15 +++- src/main/Plateau.java | 26 ++++--- .../condition/ConditionStatistiquesTest.java | 26 +++++++ tests/condition/WinConditionHunterTest.java | 49 ++++++++++++ tests/condition/WinConditionShadowTest.java | 78 +++++++++++++++++++ 10 files changed, 206 insertions(+), 28 deletions(-) create mode 100644 tests/condition/ConditionStatistiquesTest.java create mode 100644 tests/condition/WinConditionHunterTest.java create mode 100644 tests/condition/WinConditionShadowTest.java diff --git a/src/condition/ConditionClassPersonnage.java b/src/condition/ConditionClassPersonnage.java index 5912d24..9b44e74 100644 --- a/src/condition/ConditionClassPersonnage.java +++ b/src/condition/ConditionClassPersonnage.java @@ -11,6 +11,15 @@ public class ConditionClassPersonnage extends Condition{ private List> classes; + + /** + * Construit une condition qui vérifie la possession d'un certain Personnage dans une liste définie. + * exemple : + * + * classes = { Emi.class, Metamorphe.class, ... etc } + * + * @param classes Les Class des différents Personnage's. + */ public ConditionClassPersonnage(List> classes){ this.classes = new ArrayList>(); diff --git a/src/condition/ConditionStatistiques.java b/src/condition/ConditionStatistiques.java index 1b05b99..32d36f9 100644 --- a/src/condition/ConditionStatistiques.java +++ b/src/condition/ConditionStatistiques.java @@ -4,8 +4,8 @@ import main.Joueur; public class ConditionStatistiques extends Condition { - public static final boolean PLATEAU = false; - public static final boolean JOUEUR = true; + public static final boolean PLATEAU = true; + public static final boolean JOUEUR = false; public static final int EQUAL = 0; public static final int MORE = 1; @@ -19,7 +19,6 @@ public class ConditionStatistiques extends Condition { /** - * * @param plateauJoueur * @param key * @param value @@ -28,11 +27,10 @@ public class ConditionStatistiques extends Condition { public ConditionStatistiques(boolean plateauJoueur,String key,int value,int equalMoreLess) { if(equalMoreLess >= 0 && equalMoreLess <= 2) this.equalMoreLess = equalMoreLess; - else // TODO exception + else {} // TODO exception this.key = key; this.value = value; - this.plateauJoueur = plateauJoueur; } @@ -46,21 +44,21 @@ public class ConditionStatistiques extends Condition { int valeur; if(this.plateauJoueur) { - valeur = joueur.getPlateau().getStat(key); + valeur = joueur.getPlateau().getStat(this.key); }else { - valeur = joueur.getStat(key); - } + valeur = joueur.getStat(this.key); + } + switch(this.equalMoreLess) { case EQUAL: return this.value == valeur; case MORE: - return this.value <= valeur; - case LESS: return this.value >= valeur; + case LESS: + return this.value <= valeur; default: - // TODO exception return false; } } diff --git a/src/condition/WinConditionHunter.java b/src/condition/WinConditionHunter.java index 30a8068..ee7ef23 100644 --- a/src/condition/WinConditionHunter.java +++ b/src/condition/WinConditionHunter.java @@ -9,7 +9,9 @@ public class WinConditionHunter extends Condition{ public boolean isTrue(Joueur j) { int nbShadow = j.getPlateau().getStat(Plateau.NB_SHADOWS); - Condition winCondition = new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_SHADOW, nbShadow, ConditionStatistiques.MORE); + + Condition winCondition = new ConditionStatistiques( + ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_SHADOW, nbShadow, ConditionStatistiques.LESS); return winCondition.isTrue(j); } diff --git a/src/condition/WinConditionShadow.java b/src/condition/WinConditionShadow.java index 614b3ba..08b510b 100644 --- a/src/condition/WinConditionShadow.java +++ b/src/condition/WinConditionShadow.java @@ -9,7 +9,10 @@ public class WinConditionShadow extends Condition{ public boolean isTrue(Joueur j) { int nbHunter = j.getPlateau().getStat(Plateau.NB_HUNTERS); - Condition winCondition = new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_HUNTER, nbHunter, ConditionStatistiques.MORE); + Condition winCondition = + new ConditionMultipleOR( + new ConditionStatistiques(ConditionStatistiques.PLATEAU,Plateau.NB_MORTS_NEUTRAL,3,ConditionStatistiques.LESS), + new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_HUNTER, nbHunter, ConditionStatistiques.LESS)); return winCondition.isTrue(j); } diff --git a/src/main/CarteLieu.java b/src/main/CarteLieu.java index 66719ce..5b0cbf5 100644 --- a/src/main/CarteLieu.java +++ b/src/main/CarteLieu.java @@ -7,8 +7,6 @@ public class CarteLieu { private String nom; private CarteLieu voisin; private Plateau plateau; - // TODO connaitre carte voisine sur un autre territoire pour emi? - public CarteLieu(String n, List vals, CarteLieu vois, Plateau plat){ nom = n; diff --git a/src/main/Joueur.java b/src/main/Joueur.java index 6cfd9e8..fd55311 100644 --- a/src/main/Joueur.java +++ b/src/main/Joueur.java @@ -58,12 +58,17 @@ public class Joueur { return this.equipe; } - public int setStat(String key, int valeur) { - return stats.put(key, valeur); + public void setStat(String key, int valeur) { + this.stats.put(key, valeur); } public int getStat(String key) { - return stats.get(key); + + if(stats.containsKey(key)) { + return stats.get(key); + }else { + return -1; + } } @@ -134,4 +139,8 @@ public class Joueur { } + public void setPlateau(Plateau plateau2) { + this.plateau = plateau2; + } + } diff --git a/src/main/Plateau.java b/src/main/Plateau.java index 3a4d6da..977f36f 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -34,17 +34,18 @@ public class Plateau { this.joueurs = joueurs; this.lieux = new ArrayList<>(); - stats = new HashMap<>(); + this.stats = new HashMap<>(); // Initialisation plateau - stats.put(NB_HUNTERS, 0); - stats.put(NB_SHADOWS, 0); - stats.put(NB_NEUTRES, 0); - stats.put(NB_MORTS, 0); - stats.put(NB_MORTS_NEUTRAL, 0); - stats.put(NB_MORTS_HUNTER, 0); - stats.put(NB_MORTS_SHADOW, 0); - stats.put(PARTIE_FINIE, 0); + this.stats.put(NB_HUNTERS, 0); + this.stats.put(NB_SHADOWS, 0); + this.stats.put(NB_NEUTRES, 0); + this.stats.put(NB_MORTS, 0); + this.stats.put(NB_MORTS_NEUTRAL, 0); + this.stats.put(NB_MORTS_HUNTER, 0); + this.stats.put(NB_MORTS_SHADOW, 0); + this.stats.put(PARTIE_FINIE, 0); + } @@ -95,10 +96,15 @@ public class Plateau { return this.joueurs; } + public void setStat(String key, int valeur) { + this.stats.put(key, valeur); + } + public int getStat(String key) { + if(this.stats.containsKey(key)) { - return this.getStat(key); + return this.stats.get(key); }else { //TODO Exception diff --git a/tests/condition/ConditionStatistiquesTest.java b/tests/condition/ConditionStatistiquesTest.java new file mode 100644 index 0000000..63e0f5b --- /dev/null +++ b/tests/condition/ConditionStatistiquesTest.java @@ -0,0 +1,26 @@ +package condition; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Before; + +import main.Joueur; +import main.Plateau; + +class ConditionStatistiquesTest { + + Plateau plateau; + Joueur joueur; + + @Before + void init() { + List list = new ArrayList(); + joueur = new Joueur("Jack"); + list.add(joueur); + plateau = new Plateau(list); + joueur.setPlateau(plateau); + } + + //TODO +} diff --git a/tests/condition/WinConditionHunterTest.java b/tests/condition/WinConditionHunterTest.java new file mode 100644 index 0000000..9b1a04c --- /dev/null +++ b/tests/condition/WinConditionHunterTest.java @@ -0,0 +1,49 @@ +package condition; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import main.Joueur; +import main.Plateau; + +class WinConditionHunterTest { + + Plateau plateau; + Joueur joueur; + + @BeforeEach + void init() { + List list = new ArrayList(); + joueur = new Joueur("Jack"); + list.add(joueur); + plateau = new Plateau(list); + joueur.setPlateau(plateau); + } + + @Test + void isTrue_AllShadowsAreDead_True() { + + WinConditionHunter wch = new WinConditionHunter(); + plateau.setStat(Plateau.NB_SHADOWS, 2); + plateau.setStat(Plateau.NB_MORTS_SHADOW, 2); + + assertTrue(wch.isTrue(joueur)); + } + + @Test + void isTrue_NotAllShadowsAreDead_False() { + + WinConditionHunter wch = new WinConditionHunter(); + plateau.setStat(Plateau.NB_SHADOWS, 20); + plateau.setStat(Plateau.NB_MORTS_SHADOW, 8); + + assertFalse(wch.isTrue(joueur)); + } + +} diff --git a/tests/condition/WinConditionShadowTest.java b/tests/condition/WinConditionShadowTest.java new file mode 100644 index 0000000..96c91a3 --- /dev/null +++ b/tests/condition/WinConditionShadowTest.java @@ -0,0 +1,78 @@ +package condition; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import main.Joueur; +import main.Plateau; + +class WinConditionShadowTest { + + Plateau plateau; + Joueur joueur; + + @BeforeEach + void init() { + List list = new ArrayList(); + joueur = new Joueur("Jack"); + list.add(joueur); + plateau = new Plateau(list); + joueur.setPlateau(plateau); + } + + @Test + void isTrue_AllHuntersAreDead_LessThan3NeutralsAreDead_True() { + + WinConditionShadow wch = new WinConditionShadow(); + plateau.setStat(Plateau.NB_HUNTERS, 2); + plateau.setStat(Plateau.NB_MORTS_HUNTER, 2); + + plateau.setStat(Plateau.NB_MORTS_NEUTRAL, 2); + + assertTrue(wch.isTrue(joueur)); + } + + @Test + void isTrue_AllHuntersAreDead_MoreThan3NeutralsAreDead_True() { + + WinConditionShadow wch = new WinConditionShadow(); + plateau.setStat(Plateau.NB_HUNTERS, 2); + plateau.setStat(Plateau.NB_MORTS_HUNTER, 2); + + plateau.setStat(Plateau.NB_MORTS_NEUTRAL, 4); + + assertTrue(wch.isTrue(joueur)); + } + + @Test + void isTrue_NotAllHuntersAreDead_MoreThan3NeutralsAreDead_True() { + + WinConditionShadow wch = new WinConditionShadow(); + plateau.setStat(Plateau.NB_HUNTERS, 20); + plateau.setStat(Plateau.NB_MORTS_HUNTER, 8); + + plateau.setStat(Plateau.NB_MORTS_NEUTRAL, 4); + + assertTrue(wch.isTrue(joueur)); + } + + + @Test + void isTrue_NotAllHuntersAreDead_LessThan3NeutralsAreDead_False() { + + WinConditionShadow wch = new WinConditionShadow(); + plateau.setStat(Plateau.NB_HUNTERS, 20); + plateau.setStat(Plateau.NB_MORTS_HUNTER, 8); + + plateau.setStat(Plateau.NB_MORTS_NEUTRAL, 2); + + assertFalse(wch.isTrue(joueur)); + } + +}