Final commit
This commit is contained in:
parent
da0baa0a2a
commit
b6314f7fd8
@ -21,6 +21,11 @@ public class Chessboard {
|
||||
currentSize = size;
|
||||
}
|
||||
|
||||
public Position[] getQueensPositions(){
|
||||
Position[] a = new Position[queensPosition.size()];
|
||||
return queensPosition.toArray(a);
|
||||
}
|
||||
|
||||
public int getTile(int x,int y){
|
||||
return gameBoard[x][y];
|
||||
}
|
||||
@ -79,9 +84,4 @@ public class Chessboard {
|
||||
}
|
||||
System.out.println("\n\n");
|
||||
}
|
||||
|
||||
public Position[] getQueensPositions() {
|
||||
Position[] a = new Position[queensPosition.size()];
|
||||
return queensPosition.toArray(a);
|
||||
}
|
||||
}
|
||||
|
@ -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.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;
|
||||
@ -109,25 +105,36 @@ public class EightQueensSolverSteps {
|
||||
|
||||
@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());
|
||||
for (int row = 0; row < Chessboard.SIZE; row++) {
|
||||
int queenCount = 0;
|
||||
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++) {
|
||||
assert lignes.contains(i) : "La ligne " + i + " n'a pas de reine";
|
||||
}
|
||||
assertTrue(1 == queenCount, "La ligne " + row + " n'a pas exactement une 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());
|
||||
for (int col = 0; col < Chessboard.SIZE; col++) {
|
||||
int queenCount = 0;
|
||||
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++) {
|
||||
assert colonnes.contains(i) : "La colonne " + i + " n'a pas de reine";
|
||||
}
|
||||
assertTrue(1 == queenCount, "La colonne " + col + " n'a pas exactement une 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());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
Given un echiquier vide
|
||||
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
|
||||
Then 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
|
||||
|
||||
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
|
||||
Then 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