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 boolean isTrue(Joueur joueur) {
return true;
}
public abstract boolean isTrue(Joueur joueur);
}

View File

@ -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<Condition> conditions;
public ConditionMultiple(Condition ...conditions) {
public ConditionMultiple(List<Condition> conditions) {
this.conditions = new ArrayList<Condition>();
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)
@ -36,9 +36,4 @@ public class ConditionMultiple extends Condition {
return conditions;
}
public void setConditions(List<Condition> conditions) {
this.conditions = conditions;
}
}

View File

@ -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<Condition> 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)

View File

@ -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;
}
}
}
}

View File

@ -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);
}

View File

@ -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<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 =
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);
}

View File

@ -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(
List<Condition> conditions = new ArrayList<Condition>();
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.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);
}

View File

@ -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);

View File

@ -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(
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);
}

View File

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

View File

@ -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<Joueur.Equipe> equipes = new ArrayList<Joueur.Equipe>();
@ -39,7 +35,7 @@ class ConditionTypeTest {
}
@Test
public void conditionClass_ListTypeVide_RenvoieFalse() {
public void isTrue_ListTypeVide_False() {
List<Joueur.Equipe> equipes = new ArrayList<Joueur.Equipe>();

View File

@ -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);

View File

@ -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);