Final commit
This commit is contained in:
parent
da0baa0a2a
commit
b6314f7fd8
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
// Vérifie que toutes les lignes de 0 à n-1 ont une reine
|
queenCount++;
|
||||||
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")
|
@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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assertTrue(1 == queenCount, "La colonne " + col + " n'a pas exactement une reine");
|
||||||
}
|
}
|
||||||
// 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";
|
@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
|
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
|
Loading…
Reference in New Issue
Block a user