commite
This commit is contained in:
parent
07a187dc5a
commit
da0baa0a2a
Binary file not shown.
Binary file not shown.
Binary file not shown.
5
pom.xml
5
pom.xml
@ -51,6 +51,11 @@
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>${maven-surefire-plugin.version}</version>
|
||||
<configuration>
|
||||
<includes>
|
||||
<include>**/*Test.java</include>
|
||||
</includes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
@ -79,4 +79,9 @@ public class Chessboard {
|
||||
}
|
||||
System.out.println("\n\n");
|
||||
}
|
||||
|
||||
public Position[] getQueensPositions() {
|
||||
Position[] a = new Position[queensPosition.size()];
|
||||
return queensPosition.toArray(a);
|
||||
}
|
||||
}
|
||||
|
@ -86,8 +86,8 @@ class ChessboardTest {
|
||||
return x >= 0 && x < Chessboard.SIZE && y >= 0 && y < Chessboard.SIZE;
|
||||
}
|
||||
|
||||
|
||||
void testWinningSolution(Chessboard chessboard) {
|
||||
// méthode appelée par d'autres tests
|
||||
private void testWinningSolution(Chessboard chessboard) {
|
||||
assertEquals(Chessboard.SIZE, chessboard.getNumberOfQueen(),"Devrait etre egal a "+Chessboard.SIZE);
|
||||
for(int i = 0; i< Chessboard.SIZE ;i++){
|
||||
for(int j = 0; j< Chessboard.SIZE ;j++){
|
||||
|
@ -12,6 +12,4 @@ import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME;
|
||||
@SelectClasspathResource("features")
|
||||
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "fr.iut_fbleau.but3.dev6_2.steps")
|
||||
public class CucumberTest {
|
||||
|
||||
|
||||
}
|
||||
|
@ -5,6 +5,9 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import fr.iut_fbleau.but3.dev6_2.Chessboard;
|
||||
import fr.iut_fbleau.but3.dev6_2.EightQueensSolver;
|
||||
import fr.iut_fbleau.but3.dev6_2.Position;
|
||||
@ -50,7 +53,7 @@ public class EightQueensSolverSteps {
|
||||
lastRemovedQueen = new Position(x, y);
|
||||
}
|
||||
|
||||
@Then("{int} reine(s) sur l'échiquier")
|
||||
@Then("{int} reine\\(s) sur l'échiquier")
|
||||
public void reineSurLEchiquier(int queensOnChessboard) {
|
||||
assertEquals(queensOnChessboard, this.solver.getChessboard().getNumberOfQueen());
|
||||
}
|
||||
@ -89,14 +92,42 @@ public class EightQueensSolverSteps {
|
||||
}
|
||||
}
|
||||
|
||||
@Then("la case de la reine retirée est libre")
|
||||
public void caseReineRetireeEstLibre(){
|
||||
if(lastRemovedQueen != null){
|
||||
assertTrue(this.solver.getChessboard().VerifAccessible(lastRemovedQueen.x(), lastRemovedQueen.y()), "La case (" + lastRemovedQueen.x() + ", " + lastRemovedQueen.y() + ") est capturée mais ne devrait pas l'être.");
|
||||
lastRemovedQueen = null;
|
||||
@Then("la case {int}, {int} est libre")
|
||||
public void caseReineRetireeEstLibre(int x, int y){
|
||||
assertTrue(this.solver.getChessboard().VerifAccessible(x, y), "La case (" + x + ", " +y + ") est capturée mais ne devrait pas l'être.");
|
||||
}
|
||||
|
||||
@When("le solveur Sim termine de résoudre le problème")
|
||||
public void le_solveurSim_termine_de_résoudre_le_problème() {
|
||||
this.solver.SolverSim(0);
|
||||
}
|
||||
|
||||
@When("le solveur Vic termine de résoudre le problème")
|
||||
public void le_solveurVic_termine_de_résoudre_le_problème() {
|
||||
this.solver.SolverVic(0);
|
||||
}
|
||||
|
||||
@Then("toutes les lignes doivent avoir une reine")
|
||||
public void toutes_les_lignes_doivent_avoir_une_reine() {
|
||||
Set<Integer> lignes = new HashSet<>();
|
||||
for (Position position : solver.getChessboard().getQueensPositions()) {
|
||||
lignes.add(position.x());
|
||||
}
|
||||
else{
|
||||
fail("Aucune reine n'a été retirée, ce test ne peut avoir lieu");
|
||||
// Vérifie que toutes les lignes de 0 à n-1 ont une reine
|
||||
for (int i = 0; i < Chessboard.SIZE; i++) {
|
||||
assert lignes.contains(i) : "La ligne " + i + " n'a pas de reine";
|
||||
}
|
||||
}
|
||||
|
||||
@Then("toutes les colonnes doivent avoir une reine")
|
||||
public void toutes_les_colonnes_doivent_avoir_une_reine() {
|
||||
Set<Integer> colonnes = new HashSet<>();
|
||||
for (Position position : solver.getChessboard().getQueensPositions()) {
|
||||
colonnes.add(position.x());
|
||||
}
|
||||
// Vérifie que toutes les colonnes de 0 à n-1 ont une reine
|
||||
for (int i = 0; i < Chessboard.SIZE; i++) {
|
||||
assert colonnes.contains(i) : "La colonne " + i + " n'a pas de reine";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,24 +0,0 @@
|
||||
package fr.iut_fbleau.but3.dev6_2.steps;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import fr.iut_fbleau.but3.dev6_2.Chessboard;
|
||||
|
||||
class ChessboardTest {
|
||||
|
||||
private Chessboard chessboard;
|
||||
|
||||
@BeforeEach
|
||||
public void beforeEach(){
|
||||
this.chessboard = new Chessboard();
|
||||
}
|
||||
|
||||
@Test
|
||||
void placeAQueen(){
|
||||
this.chessboard.placeQueen(0,0);
|
||||
assertEquals(1, this.chessboard.getNumberOfQueen());
|
||||
}
|
||||
|
||||
}
|
@ -6,18 +6,3 @@ Feature: Placer une reine
|
||||
When placer une reine en 0, 0
|
||||
Then 1 reine(s) sur l'échiquier
|
||||
|
||||
Scenario: Capturer toutes les cases de la colonne d'une reine
|
||||
Given un echiquier vide
|
||||
When placer une reine en 4, 4
|
||||
Then la colonne 4 est capturée
|
||||
|
||||
Scenario: Capturer toutes les cases de la ligne d'une reine
|
||||
Given un echiquier vide
|
||||
When placer une reine en 4, 4
|
||||
Then toutes les cases de la ligne 4 sont prises
|
||||
|
||||
Scenario : Capturer toutes les cases en diagonales d'une reine
|
||||
Given un echiquier vide
|
||||
When placer une reine en 4, 4
|
||||
Then la diagonnale montante 0, 0 est capturée
|
||||
And la diagonale descendante 8, 0 est capturée
|
||||
|
@ -3,13 +3,6 @@ Feature: Retirer une reine
|
||||
|
||||
Scenario: Retirer une reine en 0, 0
|
||||
Given un echiquier avec 5 reines valides
|
||||
When retirer la 4e reine
|
||||
When retirer une reine en 2, 3
|
||||
Then 4 reine(s) sur l'échiquier
|
||||
And la case de la reine retirée est libre
|
||||
|
||||
|
||||
|
||||
5, 4
|
||||
7, 5
|
||||
4, 6
|
||||
0, 7
|
||||
And la case 2, 3 est libre
|
@ -1,14 +1,17 @@
|
||||
Feature: Résoudre le problème
|
||||
|
||||
Scenario: Vérification des positions des reines
|
||||
Scenario: Vérification de la résolution du problème par le solveur de Simon
|
||||
Given un echiquier vide
|
||||
When le solveur termine de résoudre le problème
|
||||
When le solveur Sim termine de résoudre le problème
|
||||
Then chaque reine est placée sur une case différente
|
||||
And aucune reine ne doit être menacée par une autre
|
||||
|
||||
Scenario: Vérification de la complétude de la solution
|
||||
Given un echiquier vide
|
||||
When le solveur termine de résoudre le problème
|
||||
Then toutes les lignes doivent avoir une reine
|
||||
And toutes les lignes doivent avoir une reine
|
||||
And toutes les colonnes doivent avoir une reine
|
||||
|
||||
Scenario: Vérification de la résolution du problème par le solveur de Victor
|
||||
Given un echiquier vide
|
||||
When le solveur Vic termine de résoudre le problème
|
||||
Then chaque reine est placée sur une case différente
|
||||
And aucune reine ne doit être menacée par une autre
|
||||
And toutes les lignes doivent avoir une reine
|
||||
And toutes les colonnes doivent avoir une reine
|
||||
And chaque diagonale au maximum 1 reine
|
Loading…
Reference in New Issue
Block a user