Unit tests WinConditionHunter / Shadow

This commit is contained in:
Paul Gross 2020-04-20 12:38:06 +02:00
parent b6a1db9e3b
commit fb4e3c6c7c
10 changed files with 206 additions and 28 deletions

View File

@ -11,6 +11,15 @@ public class ConditionClassPersonnage extends Condition{
private List<Class<? extends CartePersonnage>> 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<Class<? extends CartePersonnage>> classes){
this.classes = new ArrayList<Class<? extends CartePersonnage>>();

View File

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

View File

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

View File

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

View File

@ -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<Integer> vals, CarteLieu vois, Plateau plat){
nom = n;

View File

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

View File

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

View File

@ -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<Joueur> list = new ArrayList<Joueur>();
joueur = new Joueur("Jack");
list.add(joueur);
plateau = new Plateau(list);
joueur.setPlateau(plateau);
}
//TODO
}

View File

@ -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<Joueur> list = new ArrayList<Joueur>();
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));
}
}

View File

@ -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<Joueur> list = new ArrayList<Joueur>();
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));
}
}