From da0baa0a2add436ac4d3dd55b254317b34c78d22 Mon Sep 17 00:00:00 2001 From: Simon Catanese Date: Sat, 29 Jun 2024 00:09:48 +0200 Subject: [PATCH] commite --- .../iut_fbleau/but3/dev6_2/Chessboard.class | Bin 2020 -> 0 bytes .../but3/dev6_2/EightQueensSolver.class | Bin 1124 -> 0 bytes bin/fr/iut_fbleau/but3/dev6_2/Position.class | Bin 1260 -> 0 bytes pom.xml | 5 ++ .../fr/iut_fbleau/but3/dev6_2/Chessboard.java | 5 ++ .../but3/dev6_2/ChessboardTest.java | 4 +- .../iut_fbleau/but3/dev6_2/CucumberTest.java | 2 - .../dev6_2/steps/EightQueensSolverSteps.java | 47 +++++++++++++++--- .../steps/EightQueensSolverStepsTest.java | 24 --------- .../resources/features/placeAQueen.feature | 15 ------ ...ueen copy.feature => removeAQueen.feature} | 11 +--- .../resources/features/solveProblem.feature | 19 ++++--- 12 files changed, 64 insertions(+), 68 deletions(-) delete mode 100644 bin/fr/iut_fbleau/but3/dev6_2/Chessboard.class delete mode 100644 bin/fr/iut_fbleau/but3/dev6_2/EightQueensSolver.class delete mode 100644 bin/fr/iut_fbleau/but3/dev6_2/Position.class delete mode 100644 src/test/java/fr/iut_fbleau/but3/dev6_2/steps/EightQueensSolverStepsTest.java rename src/test/resources/features/{removeAQueen copy.feature => removeAQueen.feature} (65%) 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 8a66e1a7c9492f6e74390e3bdb2d5f2ca780780c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2020 zcmbVMO>-MX5Pc)9ELmDd@`q$>Nlxr2SQ5cX91sLK#Z0}6k{{h8U&#s8%!h{r;nd$E7*KfLe`o}*Weh**? z?+4+5*AGR74}A=gyL^x5nq1$`tyJ%dn$6HRr|FtK&)`jG*8K=Dq#9;UYumRQ)u!O> zT(xaq%GJeQ{`PFHct==P)!=5`k07~hZI$}rhpJ*g%Kh8CC6-)sm|@t7*0!}~ZqYRP zep$2ZAWp$6eTGyFV}#+kAfdDhN*ui^|xyfQ9L6bI>z8j zmr9xS5aLMqkyJ5((-i7BF!AU0Izu$=M(jyTA+tF|37k|hg|iHbEi6jalmzWz*J$fC z$vL-bin>|S?%=NSgOg<3KU zsskm)zsH+xu|jaM^k#>L!?|-M?~WeYHb+=O+c@VYRy#$v5TEvGq`N4xny_HJTcv3YH0neTRB zBiq7ularq3$GZ#@PrgdC(9H!VsbU^# ze=o-HGA@JR6_PwCU`P%+IuFU=Mfy2Me+7MXrU^^yJZTollhK~Y9)e{ffk@y7^m`s4 zlzoI#8;6KIz~I+pXLyy?Ata!gIirVny++O0u3TT;0%k8p$cS^)_4cX>p;a54{-)KLh1ydC;`PVj!^ii9Ns9w&u)N*Rb`fRY!cSI3Z~B2Lg8K7)&N z%Hu3nkir^iT9}4OckdyK*T`!aeZRrOey2gt!pUEd{FU;}aFrb0{7=y?s~IGwgGZQQ z_>v^IcCzBYOe843H=SkmFB2)5f(5yWD3`Va0Jo85Z%-3 zx>nZB9c{g^CyEY3$DCmrPL{!+NahuU7{*GrX1LB)sZbWWs})>lM%xzk*{!s;v@2@0 zf~DKrDirv`=mb~L#c>J|hN+VSmyMlWXTuf3tmUk7UDyn2@i!R5#M;TRM@chb#L%sv zhvPKjf62)`sX3xTDlC^o#n(KchNa!N4b#avw$LjXmFV_yoIyXyZqtY-l1*o?DvOpy zqD^ug#E^nvj{3r!6X0y?q~8 zvbG5$vSyf~Dfofz5$Vb~dhzjHz1lugMUGm_kf28V*ANh)oaNd@v0_Mpz5mSCw5%dV zsoOq!1&l0>C++;Sr)NO+CY`e085l?%fTcb_d3b>EJE(6EO*PQlz`$!S`WD%41ju%f z4G@xoeuN2?2C0Shk+7tPo_Y(lfpgK&3xopiG4{$oHyB-biIu@1UX1AJfgG)6WrU|C-%zfjnhw|L37!;!zSGB&9SsSx#RUJ&FiXiPEgbaDm9C(Sr;< zk!8fOfj;Ev{t-=dh9bHVjC})R-!aeF7X-diNf_oZ-;y#+DVe_UXt6VRTaD>;)Y~+$E%y+)%FV>=Kqswf{3#%C*ZX!^ld&H>l$t?la$> zvpebG>r@)tsHsah>>5t3mY`I_yB zkN#m@xSJMh#X^4&YEL%TE!R2}O1PYFpwy+Y3)!oL!BY1`*$wHt4e`znNOK+0=K_Ja zmChUXuSlsp!z@p5W?&F4D&AIUaOF6Iaxs9^j$Y#@ zwClvgg?EGIu0xY}%sdH9VVZ3p-$D&T1)p5_2(w7C$}=d#zykZSoP7~5@d`u#01K5C AdH?_b 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