From 06334783897de452a4b11ac0bfeb897a349fca7b Mon Sep 17 00:00:00 2001 From: Paul Gross Date: Mon, 20 Apr 2020 13:48:13 +0200 Subject: [PATCH] ConditionTests 100% Coverage --- src/condition/Condition.java | 4 +- src/condition/ConditionMultiple.java | 11 +- src/condition/ConditionMultipleOR.java | 5 +- src/condition/ConditionStatistiques.java | 13 +-- src/condition/WinConditionHunter.java | 2 +- src/condition/WinConditionShadow.java | 14 ++- src/personnage/Allie.java | 16 ++- src/personnage/Bob.java | 2 +- src/personnage/Daniel.java | 28 +++-- .../ConditionClassPersonnageTest.java | 4 +- tests/condition/ConditionMultipleTest.java | 107 ++++++++++++++++-- .../condition/ConditionStatistiquesTest.java | 65 ++++++++++- tests/condition/ConditionTypeTest.java | 8 +- tests/condition/WinConditionHunterTest.java | 2 +- tests/condition/WinConditionShadowTest.java | 8 +- 15 files changed, 224 insertions(+), 65 deletions(-) diff --git a/src/condition/Condition.java b/src/condition/Condition.java index 57d2399..6553990 100644 --- a/src/condition/Condition.java +++ b/src/condition/Condition.java @@ -4,7 +4,5 @@ import main.Joueur; public abstract class Condition { - public boolean isTrue(Joueur joueur) { - return true; - } + public abstract boolean isTrue(Joueur joueur); } diff --git a/src/condition/ConditionMultiple.java b/src/condition/ConditionMultiple.java index 477a9e7..2fb569c 100644 --- a/src/condition/ConditionMultiple.java +++ b/src/condition/ConditionMultiple.java @@ -1,7 +1,6 @@ package condition; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import main.Joueur; @@ -10,16 +9,17 @@ public class ConditionMultiple extends Condition { private List conditions; - public ConditionMultiple(Condition ...conditions) { + public ConditionMultiple(List conditions) { this.conditions = new ArrayList(); - this.conditions.addAll(Arrays.asList(conditions)); + this.conditions.addAll(conditions); } /** * Vérifie que toutes les conditions soient vraies * @param joueur Le joueur sur lequel on vérifie les conditions. * @return boolean + * @throws Exception */ @Override public boolean isTrue(Joueur joueur) @@ -35,10 +35,5 @@ public class ConditionMultiple extends Condition { public List getConditions() { return conditions; } - - public void setConditions(List conditions) { - this.conditions = conditions; - } - } diff --git a/src/condition/ConditionMultipleOR.java b/src/condition/ConditionMultipleOR.java index d27cf8b..0072bdc 100644 --- a/src/condition/ConditionMultipleOR.java +++ b/src/condition/ConditionMultipleOR.java @@ -1,11 +1,13 @@ package condition; +import java.util.List; + import main.Joueur; public class ConditionMultipleOR extends ConditionMultiple{ - public ConditionMultipleOR(Condition ...conditions) { + public ConditionMultipleOR(List conditions) { super(conditions); } @@ -13,6 +15,7 @@ public class ConditionMultipleOR extends ConditionMultiple{ * Vérifie qu'au moins une des conditions soit vérifiée. * @param joueur Le joueur sur lequel on vérifie les conditions. * @return boolean + * @throws Exception */ @Override public boolean isTrue(Joueur joueur) diff --git a/src/condition/ConditionStatistiques.java b/src/condition/ConditionStatistiques.java index 32d36f9..c773135 100644 --- a/src/condition/ConditionStatistiques.java +++ b/src/condition/ConditionStatistiques.java @@ -26,9 +26,7 @@ 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 - + this.equalMoreLess = equalMoreLess; this.key = key; this.value = value; this.plateauJoueur = plateauJoueur; @@ -36,10 +34,11 @@ public class ConditionStatistiques extends Condition { /** * @param joueur sur lequel on vérifie la condition + * @throws Exception * */ @Override - public boolean isTrue(Joueur joueur) { + public boolean isTrue(Joueur joueur){ int valeur; if(this.plateauJoueur) @@ -55,11 +54,11 @@ public class ConditionStatistiques extends Condition { 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: return false; - } + } } } diff --git a/src/condition/WinConditionHunter.java b/src/condition/WinConditionHunter.java index ee7ef23..1f38746 100644 --- a/src/condition/WinConditionHunter.java +++ b/src/condition/WinConditionHunter.java @@ -11,7 +11,7 @@ public class WinConditionHunter extends Condition{ int nbShadow = j.getPlateau().getStat(Plateau.NB_SHADOWS); Condition winCondition = new ConditionStatistiques( - ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_SHADOW, nbShadow, ConditionStatistiques.LESS); + ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_SHADOW, nbShadow, ConditionStatistiques.MORE); return winCondition.isTrue(j); } diff --git a/src/condition/WinConditionShadow.java b/src/condition/WinConditionShadow.java index 08b510b..899acda 100644 --- a/src/condition/WinConditionShadow.java +++ b/src/condition/WinConditionShadow.java @@ -1,5 +1,8 @@ package condition; +import java.util.ArrayList; +import java.util.List; + import main.Joueur; import main.Plateau; @@ -9,10 +12,15 @@ public class WinConditionShadow extends Condition{ public boolean isTrue(Joueur j) { int nbHunter = j.getPlateau().getStat(Plateau.NB_HUNTERS); + + List conditions = new ArrayList(); + + conditions.add(new ConditionStatistiques(ConditionStatistiques.PLATEAU,Plateau.NB_MORTS_NEUTRAL,3,ConditionStatistiques.MORE)); + conditions.add(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)); + new ConditionMultipleOR(conditions); return winCondition.isTrue(j); } diff --git a/src/personnage/Allie.java b/src/personnage/Allie.java index 9a96dcd..07939eb 100644 --- a/src/personnage/Allie.java +++ b/src/personnage/Allie.java @@ -1,5 +1,8 @@ package personnage; +import java.util.ArrayList; +import java.util.List; + import condition.Condition; import condition.ConditionMultiple; import condition.ConditionStatistiques; @@ -12,18 +15,19 @@ import main.Plateau; public class Allie extends Unique{ - public Allie(String nom, int hp, Joueur joueur) { + public Allie(String nom, int hp, Joueur joueur) throws Exception { super(nom, hp, joueur); Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false); Effet effet = new EffetSelf(action); this.setEffet(effet); - Condition winCondition = new ConditionMultiple( - - new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.PARTIE_FINIE, 1, ConditionStatistiques.EQUAL) - , new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.MORE) - ); + List conditions = new ArrayList(); + + conditions.add(new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.PARTIE_FINIE, 1, ConditionStatistiques.EQUAL)); + conditions.add(new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.MORE)); + + Condition winCondition = new ConditionMultiple(conditions); this.setCondition(winCondition); } diff --git a/src/personnage/Bob.java b/src/personnage/Bob.java index e698b4c..4d3b6d4 100644 --- a/src/personnage/Bob.java +++ b/src/personnage/Bob.java @@ -6,7 +6,7 @@ import main.Joueur; public class Bob extends CartePersonnage{ - public Bob(String nom, int hp, Joueur joueur) { + public Bob(String nom, int hp, Joueur joueur) throws Exception { super(nom, hp, joueur); Condition condition = new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_NB_EQUIPEMENTS, 5, ConditionStatistiques.MORE); this.setCondition(condition); diff --git a/src/personnage/Daniel.java b/src/personnage/Daniel.java index 7526068..8d9c95e 100644 --- a/src/personnage/Daniel.java +++ b/src/personnage/Daniel.java @@ -1,5 +1,8 @@ package personnage; +import java.util.ArrayList; +import java.util.List; + import condition.Condition; import condition.ConditionMultiple; import condition.ConditionMultipleOR; @@ -10,21 +13,24 @@ import main.Plateau; public class Daniel extends CartePersonnage{ - public Daniel(String nom, int pv, Joueur joueur) { + public Daniel(String nom, int pv, Joueur joueur) throws Exception { super(nom, pv, joueur); int nbShadow = joueur.getPlateau().getStat(Plateau.NB_SHADOWS); - Condition winCondition = new ConditionMultipleOR( - - // Mort en premier - new ConditionMultiple( - new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.LESS) - ,new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS, 1, ConditionStatistiques.LESS) - ) - // Shadows morts - ,new WinConditionHunter() - ); + List conditions = new ArrayList(); + List conditions2 = new ArrayList(); + + conditions.add(new WinConditionHunter()); + + conditions2.add(new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.LESS)); + conditions2.add(new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS, 1, ConditionStatistiques.LESS)); + + conditions.add(new ConditionMultiple(conditions2)); + + + Condition winCondition = new ConditionMultipleOR(conditions); + this.setCondition(winCondition); } diff --git a/tests/condition/ConditionClassPersonnageTest.java b/tests/condition/ConditionClassPersonnageTest.java index 02e6f46..cac4434 100644 --- a/tests/condition/ConditionClassPersonnageTest.java +++ b/tests/condition/ConditionClassPersonnageTest.java @@ -19,7 +19,7 @@ class ConditionClassPersonnageTest { @Test - public void conditionClass_RenvoieAppartenancePersonnage() { + public void conditionClass_RenvoieAppartenancePersonnage() throws Exception { List> classes = new ArrayList>(); @@ -44,7 +44,7 @@ class ConditionClassPersonnageTest { } @Test - public void conditionClass_ListClassVide_RenvoieFalse() { + public void conditionClass_ListClassVide_RenvoieFalse() throws Exception { List> classes = new ArrayList>(); diff --git a/tests/condition/ConditionMultipleTest.java b/tests/condition/ConditionMultipleTest.java index 7e8fb58..d808821 100644 --- a/tests/condition/ConditionMultipleTest.java +++ b/tests/condition/ConditionMultipleTest.java @@ -2,28 +2,119 @@ package condition; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.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 ConditionMultipleTest { + Joueur joueur; + Plateau plateau; + + @BeforeEach + void init() + { + + List list = new ArrayList(); + joueur = new Joueur("Jack"); + list.add(joueur); + plateau = new Plateau(list); + joueur.setPlateau(plateau); + } @Test - public void conditionMultipleVideRenvoieTrue() { + public void conditionMultiple_Vide_RenvoieTrue() throws Exception { - Condition condition = new ConditionMultiple(); - Joueur j = new Joueur(null); + Condition condition = new ConditionMultiple(new ArrayList()); - assertTrue(condition.isTrue(j)); + assertTrue(condition.isTrue(joueur)); } @Test - public void conditionMultipleORVideRenvoieFalse() { + public void conditionMultipleOR_Vide_False() throws Exception { - Condition condition = new ConditionMultipleOR(); - Joueur j = new Joueur(null); + Condition condition = new ConditionMultipleOR(new ArrayList()); + assertFalse(condition.isTrue(joueur)); + } + + @Test + public void conditionMultiple_AllTrue_True() throws Exception { - assertFalse(condition.isTrue(j)); + plateau.setStat("test", 20); + List list = new ArrayList(); + + for(int i = 0; i <= 20;i++) + { + ConditionStatistiques cs = new ConditionStatistiques(true,"test",20,ConditionStatistiques.EQUAL); + list.add(cs); + } + + Condition condition = new ConditionMultiple(list); + + assertTrue(condition.isTrue(joueur)); + } + + @Test + public void conditionMultiple_OneFalse_False() throws Exception { + + plateau.setStat("test", 20); + List list = new ArrayList(); + + for(int i = 0; i <= 20;i++) + { + ConditionStatistiques cs = new ConditionStatistiques(true,"test",20,ConditionStatistiques.EQUAL); + list.add(cs); + } + + // False one + ConditionStatistiques cs = new ConditionStatistiques(true,"test",30,ConditionStatistiques.EQUAL); + list.add(cs); + + Condition condition = new ConditionMultiple(list); + + assertFalse(condition.isTrue(joueur)); + } + + @Test + public void conditionMultiple_AllFalse_False() throws Exception { + + plateau.setStat("test", 20); + List list = new ArrayList(); + + for(int i = 0; i <= 20;i++) + { + ConditionStatistiques cs = new ConditionStatistiques(true,"test",30,ConditionStatistiques.EQUAL); + list.add(cs); + } + + Condition condition = new ConditionMultiple(list); + + assertFalse(condition.isTrue(joueur)); + } + + @Test + public void conditionMultipleOR_OneFalse_True() throws Exception { + + plateau.setStat("test", 20); + List list = new ArrayList(); + + for(int i = 0; i <= 20;i++) + { + ConditionStatistiques cs = new ConditionStatistiques(true,"test",20,ConditionStatistiques.EQUAL); + list.add(cs); + } + + // False one + ConditionStatistiques cs = new ConditionStatistiques(true,"test",30,ConditionStatistiques.EQUAL); + list.add(cs); + + Condition condition = new ConditionMultipleOR(list); + + assertTrue(condition.isTrue(joueur)); } } diff --git a/tests/condition/ConditionStatistiquesTest.java b/tests/condition/ConditionStatistiquesTest.java index 63e0f5b..d093d0b 100644 --- a/tests/condition/ConditionStatistiquesTest.java +++ b/tests/condition/ConditionStatistiquesTest.java @@ -1,9 +1,14 @@ package condition; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + import java.util.ArrayList; import java.util.List; +import java.util.Random; -import org.junit.Before; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import main.Joueur; import main.Plateau; @@ -13,7 +18,7 @@ class ConditionStatistiquesTest { Plateau plateau; Joueur joueur; - @Before + @BeforeEach void init() { List list = new ArrayList(); joueur = new Joueur("Jack"); @@ -22,5 +27,59 @@ class ConditionStatistiquesTest { joueur.setPlateau(plateau); } - //TODO + @Test + void isTrue_ComparisonOperatorsBehaveCorrectly() { + + Random rand = new Random(); + + int randInt1 = rand.nextInt(); + int randInt3 = rand.nextInt(); + plateau.setStat("test", randInt1); + joueur.setStat("test", randInt3); + + + int randInt2 = rand.nextInt(); + + //Conditions sur le Plateau + ConditionStatistiques cs = new ConditionStatistiques(true,"test",randInt2,ConditionStatistiques.EQUAL); + assertEquals(cs.isTrue(joueur),randInt1 == randInt2); + + cs = new ConditionStatistiques(true,"test",randInt2,ConditionStatistiques.MORE); + assertEquals(cs.isTrue(joueur),randInt1 >= randInt2); + + cs = new ConditionStatistiques(true,"test",randInt2,ConditionStatistiques.LESS); + assertEquals(cs.isTrue(joueur),randInt1 <= randInt2); + + + //Conditions sur Joueur + cs = new ConditionStatistiques(false,"test",randInt2,ConditionStatistiques.MORE); + assertEquals(cs.isTrue(joueur),randInt3 >= randInt2); + + cs = new ConditionStatistiques(false,"test",randInt2,ConditionStatistiques.MORE); + assertEquals(cs.isTrue(joueur),randInt3 >= randInt2); + + cs = new ConditionStatistiques(false,"test",randInt2,ConditionStatistiques.LESS); + assertEquals(cs.isTrue(joueur),randInt3 <= randInt2); + + cs = new ConditionStatistiques(false,"test",randInt3,ConditionStatistiques.LESS); + assertEquals(cs.isTrue(joueur),randInt3 <= randInt2); + } + + @Test + void isTrue_InvalidEqualMoreLessParameter_False() { + + plateau.setStat("test", 10); + joueur.setStat("test", 20); + ConditionStatistiques cs = new ConditionStatistiques(true,"test",0, + //Valeur censée être comprise entre 0 et 2 + 20); + assertFalse(cs.isTrue(joueur)); + + cs = new ConditionStatistiques(true,"test",0, + //Valeur censée être comprise entre 0 et 2 + -1); + + } + + } diff --git a/tests/condition/ConditionTypeTest.java b/tests/condition/ConditionTypeTest.java index 767fd67..99f653e 100644 --- a/tests/condition/ConditionTypeTest.java +++ b/tests/condition/ConditionTypeTest.java @@ -9,17 +9,13 @@ import java.util.List; import org.junit.jupiter.api.Test; import main.Joueur; -import personnage.Allie; -import personnage.Bob; -import personnage.CartePersonnage; -import personnage.Daniel; class ConditionTypeTest { @Test - public void conditionType_RenvoieAppartenanceEquipe() { + public void isTrue_RenvoieAppartenanceEquipe() { List equipes = new ArrayList(); @@ -39,7 +35,7 @@ class ConditionTypeTest { } @Test - public void conditionClass_ListTypeVide_RenvoieFalse() { + public void isTrue_ListTypeVide_False() { List equipes = new ArrayList(); diff --git a/tests/condition/WinConditionHunterTest.java b/tests/condition/WinConditionHunterTest.java index 9b1a04c..fe2ff54 100644 --- a/tests/condition/WinConditionHunterTest.java +++ b/tests/condition/WinConditionHunterTest.java @@ -37,7 +37,7 @@ class WinConditionHunterTest { } @Test - void isTrue_NotAllShadowsAreDead_False() { + void isTrue_NotAllShadowsAreDead_False(){ WinConditionHunter wch = new WinConditionHunter(); plateau.setStat(Plateau.NB_SHADOWS, 20); diff --git a/tests/condition/WinConditionShadowTest.java b/tests/condition/WinConditionShadowTest.java index 96c91a3..1d59f70 100644 --- a/tests/condition/WinConditionShadowTest.java +++ b/tests/condition/WinConditionShadowTest.java @@ -27,7 +27,7 @@ class WinConditionShadowTest { } @Test - void isTrue_AllHuntersAreDead_LessThan3NeutralsAreDead_True() { + void isTrue_AllHuntersAreDead_LessThan3NeutralsAreDead_True(){ WinConditionShadow wch = new WinConditionShadow(); plateau.setStat(Plateau.NB_HUNTERS, 2); @@ -39,7 +39,7 @@ class WinConditionShadowTest { } @Test - void isTrue_AllHuntersAreDead_MoreThan3NeutralsAreDead_True() { + void isTrue_AllHuntersAreDead_MoreThan3NeutralsAreDead_True(){ WinConditionShadow wch = new WinConditionShadow(); plateau.setStat(Plateau.NB_HUNTERS, 2); @@ -51,7 +51,7 @@ class WinConditionShadowTest { } @Test - void isTrue_NotAllHuntersAreDead_MoreThan3NeutralsAreDead_True() { + void isTrue_NotAllHuntersAreDead_MoreThan3NeutralsAreDead_True(){ WinConditionShadow wch = new WinConditionShadow(); plateau.setStat(Plateau.NB_HUNTERS, 20); @@ -64,7 +64,7 @@ class WinConditionShadowTest { @Test - void isTrue_NotAllHuntersAreDead_LessThan3NeutralsAreDead_False() { + void isTrue_NotAllHuntersAreDead_LessThan3NeutralsAreDead_False(){ WinConditionShadow wch = new WinConditionShadow(); plateau.setStat(Plateau.NB_HUNTERS, 20);