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>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
<version>${maven-surefire-plugin.version}</version>
|
<version>${maven-surefire-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<includes>
|
||||||
|
<include>**/*Test.java</include>
|
||||||
|
</includes>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
@ -79,4 +79,9 @@ public class Chessboard {
|
|||||||
}
|
}
|
||||||
System.out.println("\n\n");
|
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;
|
return x >= 0 && x < Chessboard.SIZE && y >= 0 && y < Chessboard.SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// méthode appelée par d'autres tests
|
||||||
void testWinningSolution(Chessboard chessboard) {
|
private void testWinningSolution(Chessboard chessboard) {
|
||||||
assertEquals(Chessboard.SIZE, chessboard.getNumberOfQueen(),"Devrait etre egal a "+Chessboard.SIZE);
|
assertEquals(Chessboard.SIZE, chessboard.getNumberOfQueen(),"Devrait etre egal a "+Chessboard.SIZE);
|
||||||
for(int i = 0; i< Chessboard.SIZE ;i++){
|
for(int i = 0; i< Chessboard.SIZE ;i++){
|
||||||
for(int j = 0; j< Chessboard.SIZE ;j++){
|
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")
|
@SelectClasspathResource("features")
|
||||||
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "fr.iut_fbleau.but3.dev6_2.steps")
|
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "fr.iut_fbleau.but3.dev6_2.steps")
|
||||||
public class CucumberTest {
|
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.assertTrue;
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
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.Chessboard;
|
||||||
import fr.iut_fbleau.but3.dev6_2.EightQueensSolver;
|
import fr.iut_fbleau.but3.dev6_2.EightQueensSolver;
|
||||||
import fr.iut_fbleau.but3.dev6_2.Position;
|
import fr.iut_fbleau.but3.dev6_2.Position;
|
||||||
@ -50,7 +53,7 @@ public class EightQueensSolverSteps {
|
|||||||
lastRemovedQueen = new Position(x, y);
|
lastRemovedQueen = new Position(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Then("{int} reine(s) sur l'échiquier")
|
@Then("{int} reine\\(s) sur l'échiquier")
|
||||||
public void reineSurLEchiquier(int queensOnChessboard) {
|
public void reineSurLEchiquier(int queensOnChessboard) {
|
||||||
assertEquals(queensOnChessboard, this.solver.getChessboard().getNumberOfQueen());
|
assertEquals(queensOnChessboard, this.solver.getChessboard().getNumberOfQueen());
|
||||||
}
|
}
|
||||||
@ -89,14 +92,42 @@ public class EightQueensSolverSteps {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Then("la case de la reine retirée est libre")
|
@Then("la case {int}, {int} est libre")
|
||||||
public void caseReineRetireeEstLibre(){
|
public void caseReineRetireeEstLibre(int x, int y){
|
||||||
if(lastRemovedQueen != null){
|
assertTrue(this.solver.getChessboard().VerifAccessible(x, y), "La case (" + x + ", " +y + ") est capturée mais ne devrait pas l'être.");
|
||||||
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;
|
|
||||||
|
@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{
|
// Vérifie que toutes les lignes de 0 à n-1 ont une reine
|
||||||
fail("Aucune reine n'a été retirée, ce test ne peut avoir lieu");
|
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
|
When placer une reine en 0, 0
|
||||||
Then 1 reine(s) sur l'échiquier
|
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
|
Scenario: Retirer une reine en 0, 0
|
||||||
Given un echiquier avec 5 reines valides
|
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
|
Then 4 reine(s) sur l'échiquier
|
||||||
And la case de la reine retirée est libre
|
And la case 2, 3 est libre
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
5, 4
|
|
||||||
7, 5
|
|
||||||
4, 6
|
|
||||||
0, 7
|
|
@ -1,14 +1,17 @@
|
|||||||
Feature: Résoudre le problème
|
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
|
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
|
Then chaque reine est placée sur une case différente
|
||||||
And aucune reine ne doit être menacée par une autre
|
And aucune reine ne doit être menacée par une autre
|
||||||
|
And toutes les lignes doivent avoir une reine
|
||||||
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 colonnes doivent avoir une reine
|
And toutes les colonnes doivent avoir une reine
|
||||||
And chaque diagonale au maximum 1 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
|
Loading…
Reference in New Issue
Block a user