diff --git a/bin/fr/iut_fbleau/but3/dev6_2/Chessboard.class b/bin/fr/iut_fbleau/but3/dev6_2/Chessboard.class deleted file mode 100644 index 8a66e1a..0000000 Binary files a/bin/fr/iut_fbleau/but3/dev6_2/Chessboard.class and /dev/null differ diff --git a/bin/fr/iut_fbleau/but3/dev6_2/EightQueensSolver.class b/bin/fr/iut_fbleau/but3/dev6_2/EightQueensSolver.class deleted file mode 100644 index e3aa691..0000000 Binary files a/bin/fr/iut_fbleau/but3/dev6_2/EightQueensSolver.class and /dev/null differ diff --git a/bin/fr/iut_fbleau/but3/dev6_2/Position.class b/bin/fr/iut_fbleau/but3/dev6_2/Position.class deleted file mode 100644 index 0695c7f..0000000 Binary files a/bin/fr/iut_fbleau/but3/dev6_2/Position.class and /dev/null differ diff --git a/pom.xml b/pom.xml index a319fbb..52caabd 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,11 @@ org.apache.maven.plugins maven-surefire-plugin ${maven-surefire-plugin.version} + + + **/*Test.java + + diff --git a/src/main/java/fr/iut_fbleau/but3/dev6_2/Chessboard.java b/src/main/java/fr/iut_fbleau/but3/dev6_2/Chessboard.java index 77490ba..33448bc 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev6_2/Chessboard.java +++ b/src/main/java/fr/iut_fbleau/but3/dev6_2/Chessboard.java @@ -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); + } } diff --git a/src/test/java/fr/iut_fbleau/but3/dev6_2/ChessboardTest.java b/src/test/java/fr/iut_fbleau/but3/dev6_2/ChessboardTest.java index fb59e68..7d525a3 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev6_2/ChessboardTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev6_2/ChessboardTest.java @@ -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++){ diff --git a/src/test/java/fr/iut_fbleau/but3/dev6_2/CucumberTest.java b/src/test/java/fr/iut_fbleau/but3/dev6_2/CucumberTest.java index dc928c8..74139e2 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev6_2/CucumberTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev6_2/CucumberTest.java @@ -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 { - - } diff --git a/src/test/java/fr/iut_fbleau/but3/dev6_2/steps/EightQueensSolverSteps.java b/src/test/java/fr/iut_fbleau/but3/dev6_2/steps/EightQueensSolverSteps.java index 31e1e5b..1e12e6d 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev6_2/steps/EightQueensSolverSteps.java +++ b/src/test/java/fr/iut_fbleau/but3/dev6_2/steps/EightQueensSolverSteps.java @@ -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 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 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"; } } diff --git a/src/test/java/fr/iut_fbleau/but3/dev6_2/steps/EightQueensSolverStepsTest.java b/src/test/java/fr/iut_fbleau/but3/dev6_2/steps/EightQueensSolverStepsTest.java deleted file mode 100644 index f790141..0000000 --- a/src/test/java/fr/iut_fbleau/but3/dev6_2/steps/EightQueensSolverStepsTest.java +++ /dev/null @@ -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()); - } - -} \ No newline at end of file diff --git a/src/test/resources/features/placeAQueen.feature b/src/test/resources/features/placeAQueen.feature index 1c28e04..b79b947 100644 --- a/src/test/resources/features/placeAQueen.feature +++ b/src/test/resources/features/placeAQueen.feature @@ -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 diff --git a/src/test/resources/features/removeAQueen copy.feature b/src/test/resources/features/removeAQueen.feature similarity index 65% rename from src/test/resources/features/removeAQueen copy.feature rename to src/test/resources/features/removeAQueen.feature index ecf108c..bdbf496 100644 --- a/src/test/resources/features/removeAQueen copy.feature +++ b/src/test/resources/features/removeAQueen.feature @@ -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 \ No newline at end of file + And la case 2, 3 est libre diff --git a/src/test/resources/features/solveProblem.feature b/src/test/resources/features/solveProblem.feature index 940791d..bab7d80 100644 --- a/src/test/resources/features/solveProblem.feature +++ b/src/test/resources/features/solveProblem.feature @@ -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 - And chaque diagonale au maximum 1 reine \ No newline at end of file + + 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 \ No newline at end of file