Final commit

This commit is contained in:
Simon CATANESE 2024-06-29 00:47:26 +02:00
parent da0baa0a2a
commit b6314f7fd8
3 changed files with 31 additions and 26 deletions

View File

@ -21,6 +21,11 @@ public class Chessboard {
currentSize = size; currentSize = size;
} }
public Position[] getQueensPositions(){
Position[] a = new Position[queensPosition.size()];
return queensPosition.toArray(a);
}
public int getTile(int x,int y){ public int getTile(int x,int y){
return gameBoard[x][y]; return gameBoard[x][y];
} }
@ -79,9 +84,4 @@ 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);
}
} }

View File

@ -3,10 +3,6 @@ package fr.iut_fbleau.but3.dev6_2.steps;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
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 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;
@ -109,25 +105,36 @@ public class EightQueensSolverSteps {
@Then("toutes les lignes doivent avoir une reine") @Then("toutes les lignes doivent avoir une reine")
public void toutes_les_lignes_doivent_avoir_une_reine() { public void toutes_les_lignes_doivent_avoir_une_reine() {
Set<Integer> lignes = new HashSet<>(); for (int row = 0; row < Chessboard.SIZE; row++) {
for (Position position : solver.getChessboard().getQueensPositions()) { int queenCount = 0;
lignes.add(position.x()); for (int col = 0; col < Chessboard.SIZE; col++) {
if (solver.getChessboard().getTile(row, col) == 1) {
queenCount++;
} }
// Vérifie que toutes les lignes de 0 à n-1 ont une reine }
for (int i = 0; i < Chessboard.SIZE; i++) { assertTrue(1 == queenCount, "La ligne " + row + " n'a pas exactement une reine");
assert lignes.contains(i) : "La ligne " + i + " n'a pas de reine";
} }
} }
@Then("toutes les colonnes doivent avoir une reine") @Then("toutes les colonnes doivent avoir une reine")
public void toutes_les_colonnes_doivent_avoir_une_reine() { public void toutes_les_colonnes_doivent_avoir_une_reine() {
Set<Integer> colonnes = new HashSet<>(); for (int col = 0; col < Chessboard.SIZE; col++) {
for (Position position : solver.getChessboard().getQueensPositions()) { int queenCount = 0;
colonnes.add(position.x()); for (int row = 0; row < Chessboard.SIZE; row++) {
if (solver.getChessboard().getTile(row, col) == 1) {
queenCount++;
} }
// Vérifie que toutes les colonnes de 0 à n-1 ont une reine }
for (int i = 0; i < Chessboard.SIZE; i++) { assertTrue(1 == queenCount, "La colonne " + col + " n'a pas exactement une reine");
assert colonnes.contains(i) : "La colonne " + i + " n'a pas de reine"; }
}
@Then("aucune reine ne doit être menacée par une autre")
public void aucune_reine_ne_doit_être_menacée_par_une_autre() {
for(Position pos : this.solver.getChessboard().getQueensPositions()){
this.solver.getChessboard().removeQueen(pos.x(), pos.y());
assertTrue(this.solver.getChessboard().VerifAccessible(pos.x(), pos.y()), "La case (" + pos.x() + ", " + pos.y() + ") est capturée mais ne devrait pas l'être.");
this.solver.getChessboard().placeQueen(pos.x(), pos.y());
} }
} }

View File

@ -3,15 +3,13 @@ Feature: Résoudre le problème
Scenario: Vérification de la résolution du problème par le solveur de Simon 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 Sim 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 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 And toutes les lignes doivent avoir une reine
And toutes les colonnes 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 Scenario: Vérification de la résolution du problème par le solveur de Victor
Given un echiquier vide Given un echiquier vide
When le solveur Vic termine de résoudre le problème When le solveur Vic termine de résoudre le problème
Then chaque reine est placée sur une case différente Then 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 And toutes les lignes doivent avoir une reine
And toutes les colonnes doivent avoir une reine And toutes les colonnes doivent avoir une reine