ConditionTests 100% Coverage

This commit is contained in:
Paul Gross 2020-04-20 13:48:13 +02:00
parent e829dc7de6
commit 0633478389
15 changed files with 224 additions and 65 deletions

View File

@ -4,7 +4,5 @@ import main.Joueur;
public abstract class Condition { public abstract class Condition {
public boolean isTrue(Joueur joueur) { public abstract boolean isTrue(Joueur joueur);
return true;
}
} }

View File

@ -1,7 +1,6 @@
package condition; package condition;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import main.Joueur; import main.Joueur;
@ -10,16 +9,17 @@ public class ConditionMultiple extends Condition {
private List<Condition> conditions; private List<Condition> conditions;
public ConditionMultiple(Condition ...conditions) { public ConditionMultiple(List<Condition> conditions) {
this.conditions = new ArrayList<Condition>(); this.conditions = new ArrayList<Condition>();
this.conditions.addAll(Arrays.asList(conditions)); this.conditions.addAll(conditions);
} }
/** /**
* Vérifie que toutes les conditions soient vraies * Vérifie que toutes les conditions soient vraies
* @param joueur Le joueur sur lequel on vérifie les conditions. * @param joueur Le joueur sur lequel on vérifie les conditions.
* @return boolean * @return boolean
* @throws Exception
*/ */
@Override @Override
public boolean isTrue(Joueur joueur) public boolean isTrue(Joueur joueur)
@ -36,9 +36,4 @@ public class ConditionMultiple extends Condition {
return conditions; return conditions;
} }
public void setConditions(List<Condition> conditions) {
this.conditions = conditions;
}
} }

View File

@ -1,11 +1,13 @@
package condition; package condition;
import java.util.List;
import main.Joueur; import main.Joueur;
public class ConditionMultipleOR extends ConditionMultiple{ public class ConditionMultipleOR extends ConditionMultiple{
public ConditionMultipleOR(Condition ...conditions) { public ConditionMultipleOR(List<Condition> conditions) {
super(conditions); super(conditions);
} }
@ -13,6 +15,7 @@ public class ConditionMultipleOR extends ConditionMultiple{
* Vérifie qu'au moins une des conditions soit vérifiée. * Vérifie qu'au moins une des conditions soit vérifiée.
* @param joueur Le joueur sur lequel on vérifie les conditions. * @param joueur Le joueur sur lequel on vérifie les conditions.
* @return boolean * @return boolean
* @throws Exception
*/ */
@Override @Override
public boolean isTrue(Joueur joueur) public boolean isTrue(Joueur joueur)

View File

@ -26,9 +26,7 @@ public class ConditionStatistiques extends Condition {
*/ */
public ConditionStatistiques(boolean plateauJoueur,String key,int value,int equalMoreLess) { public ConditionStatistiques(boolean plateauJoueur,String key,int value,int equalMoreLess) {
if(equalMoreLess >= 0 && equalMoreLess <= 2) this.equalMoreLess = equalMoreLess; this.equalMoreLess = equalMoreLess;
else {} // TODO exception
this.key = key; this.key = key;
this.value = value; this.value = value;
this.plateauJoueur = plateauJoueur; this.plateauJoueur = plateauJoueur;
@ -36,6 +34,7 @@ public class ConditionStatistiques extends Condition {
/** /**
* @param joueur sur lequel on vérifie la condition * @param joueur sur lequel on vérifie la condition
* @throws Exception
* *
*/ */
@Override @Override
@ -55,9 +54,9 @@ public class ConditionStatistiques extends Condition {
case EQUAL: case EQUAL:
return this.value == valeur; return this.value == valeur;
case MORE: case MORE:
return this.value >= valeur;
case LESS:
return this.value <= valeur; return this.value <= valeur;
case LESS:
return this.value >= valeur;
default: default:
return false; return false;
} }

View File

@ -11,7 +11,7 @@ public class WinConditionHunter extends Condition{
int nbShadow = j.getPlateau().getStat(Plateau.NB_SHADOWS); int nbShadow = j.getPlateau().getStat(Plateau.NB_SHADOWS);
Condition winCondition = new ConditionStatistiques( 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); return winCondition.isTrue(j);
} }

View File

@ -1,5 +1,8 @@
package condition; package condition;
import java.util.ArrayList;
import java.util.List;
import main.Joueur; import main.Joueur;
import main.Plateau; import main.Plateau;
@ -9,10 +12,15 @@ public class WinConditionShadow extends Condition{
public boolean isTrue(Joueur j) public boolean isTrue(Joueur j)
{ {
int nbHunter = j.getPlateau().getStat(Plateau.NB_HUNTERS); int nbHunter = j.getPlateau().getStat(Plateau.NB_HUNTERS);
List<Condition> conditions = new ArrayList<Condition>();
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 = Condition winCondition =
new ConditionMultipleOR( new ConditionMultipleOR(conditions);
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); return winCondition.isTrue(j);
} }

View File

@ -1,5 +1,8 @@
package personnage; package personnage;
import java.util.ArrayList;
import java.util.List;
import condition.Condition; import condition.Condition;
import condition.ConditionMultiple; import condition.ConditionMultiple;
import condition.ConditionStatistiques; import condition.ConditionStatistiques;
@ -12,18 +15,19 @@ import main.Plateau;
public class Allie extends Unique{ 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); super(nom, hp, joueur);
Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false); Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false);
Effet effet = new EffetSelf(action); Effet effet = new EffetSelf(action);
this.setEffet(effet); this.setEffet(effet);
Condition winCondition = new ConditionMultiple( List<Condition> conditions = new ArrayList<Condition>();
new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.PARTIE_FINIE, 1, ConditionStatistiques.EQUAL) conditions.add(new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.PARTIE_FINIE, 1, ConditionStatistiques.EQUAL));
, new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.MORE) conditions.add(new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.MORE));
);
Condition winCondition = new ConditionMultiple(conditions);
this.setCondition(winCondition); this.setCondition(winCondition);
} }

View File

@ -6,7 +6,7 @@ import main.Joueur;
public class Bob extends CartePersonnage{ 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); super(nom, hp, joueur);
Condition condition = new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_NB_EQUIPEMENTS, 5, ConditionStatistiques.MORE); Condition condition = new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_NB_EQUIPEMENTS, 5, ConditionStatistiques.MORE);
this.setCondition(condition); this.setCondition(condition);

View File

@ -1,5 +1,8 @@
package personnage; package personnage;
import java.util.ArrayList;
import java.util.List;
import condition.Condition; import condition.Condition;
import condition.ConditionMultiple; import condition.ConditionMultiple;
import condition.ConditionMultipleOR; import condition.ConditionMultipleOR;
@ -10,21 +13,24 @@ import main.Plateau;
public class Daniel extends CartePersonnage{ 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); super(nom, pv, joueur);
int nbShadow = joueur.getPlateau().getStat(Plateau.NB_SHADOWS); int nbShadow = joueur.getPlateau().getStat(Plateau.NB_SHADOWS);
Condition winCondition = new ConditionMultipleOR( List<Condition> conditions = new ArrayList<Condition>();
List<Condition> conditions2 = new ArrayList<Condition>();
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);
// 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()
);
this.setCondition(winCondition); this.setCondition(winCondition);
} }

View File

@ -19,7 +19,7 @@ class ConditionClassPersonnageTest {
@Test @Test
public void conditionClass_RenvoieAppartenancePersonnage() { public void conditionClass_RenvoieAppartenancePersonnage() throws Exception {
List<Class<? extends CartePersonnage>> classes = new ArrayList<Class<? extends CartePersonnage>>(); List<Class<? extends CartePersonnage>> classes = new ArrayList<Class<? extends CartePersonnage>>();
@ -44,7 +44,7 @@ class ConditionClassPersonnageTest {
} }
@Test @Test
public void conditionClass_ListClassVide_RenvoieFalse() { public void conditionClass_ListClassVide_RenvoieFalse() throws Exception {
List<Class<? extends CartePersonnage>> classes = new ArrayList<Class<? extends CartePersonnage>>(); List<Class<? extends CartePersonnage>> classes = new ArrayList<Class<? extends CartePersonnage>>();

View File

@ -2,28 +2,119 @@ package condition;
import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue; 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 org.junit.jupiter.api.Test;
import main.Joueur; import main.Joueur;
import main.Plateau;
class ConditionMultipleTest { class ConditionMultipleTest {
Joueur joueur;
Plateau plateau;
@BeforeEach
void init()
{
List<Joueur> list = new ArrayList<Joueur>();
joueur = new Joueur("Jack");
list.add(joueur);
plateau = new Plateau(list);
joueur.setPlateau(plateau);
}
@Test @Test
public void conditionMultipleVideRenvoieTrue() { public void conditionMultiple_Vide_RenvoieTrue() throws Exception {
Condition condition = new ConditionMultiple(); Condition condition = new ConditionMultiple(new ArrayList<Condition>());
Joueur j = new Joueur(null);
assertTrue(condition.isTrue(j)); assertTrue(condition.isTrue(joueur));
} }
@Test @Test
public void conditionMultipleORVideRenvoieFalse() { public void conditionMultipleOR_Vide_False() throws Exception {
Condition condition = new ConditionMultipleOR(); Condition condition = new ConditionMultipleOR(new ArrayList<Condition>());
Joueur j = new Joueur(null); assertFalse(condition.isTrue(joueur));
}
assertFalse(condition.isTrue(j)); @Test
public void conditionMultiple_AllTrue_True() throws Exception {
plateau.setStat("test", 20);
List<Condition> list = new ArrayList<Condition>();
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<Condition> list = new ArrayList<Condition>();
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<Condition> list = new ArrayList<Condition>();
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<Condition> list = new ArrayList<Condition>();
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));
} }
} }

View File

@ -1,9 +1,14 @@
package condition; package condition;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; 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.Joueur;
import main.Plateau; import main.Plateau;
@ -13,7 +18,7 @@ class ConditionStatistiquesTest {
Plateau plateau; Plateau plateau;
Joueur joueur; Joueur joueur;
@Before @BeforeEach
void init() { void init() {
List<Joueur> list = new ArrayList<Joueur>(); List<Joueur> list = new ArrayList<Joueur>();
joueur = new Joueur("Jack"); joueur = new Joueur("Jack");
@ -22,5 +27,59 @@ class ConditionStatistiquesTest {
joueur.setPlateau(plateau); 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);
}
} }

View File

@ -9,17 +9,13 @@ import java.util.List;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import main.Joueur; import main.Joueur;
import personnage.Allie;
import personnage.Bob;
import personnage.CartePersonnage;
import personnage.Daniel;
class ConditionTypeTest { class ConditionTypeTest {
@Test @Test
public void conditionType_RenvoieAppartenanceEquipe() { public void isTrue_RenvoieAppartenanceEquipe() {
List<Joueur.Equipe> equipes = new ArrayList<Joueur.Equipe>(); List<Joueur.Equipe> equipes = new ArrayList<Joueur.Equipe>();
@ -39,7 +35,7 @@ class ConditionTypeTest {
} }
@Test @Test
public void conditionClass_ListTypeVide_RenvoieFalse() { public void isTrue_ListTypeVide_False() {
List<Joueur.Equipe> equipes = new ArrayList<Joueur.Equipe>(); List<Joueur.Equipe> equipes = new ArrayList<Joueur.Equipe>();