From 05888f49cfedf8d7990f10e66330874cf196e3f0 Mon Sep 17 00:00:00 2001 From: bendi1119 Date: Fri, 17 May 2024 02:42:00 +0200 Subject: [PATCH 1/6] bdd documentation part 1-2 (TEST SPEC) #3 --- docs/BDD_DOCUMENTATION.md | 269 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100644 docs/BDD_DOCUMENTATION.md diff --git a/docs/BDD_DOCUMENTATION.md b/docs/BDD_DOCUMENTATION.md new file mode 100644 index 0000000..cb0a078 --- /dev/null +++ b/docs/BDD_DOCUMENTATION.md @@ -0,0 +1,269 @@ +** +# BDD DOKUMENTÁCIÓ +** + +## A feladat részei + +A feladatot három fázisra osztottam fel: + + *1. A tesztelendő funkciók meghatározása + 2. A tesztelendő funkciók specifikációja a BDD szabályai szerint + 3. A specifikált esetek implementálása* + +## Tesztelendő funkciók + +Teszteseteknek nyolc olyan alapvető funckiót választottam, amelyek helyes működése a játék szempontjából igencsak fontos/alapvető/elengedhetetlen. Ezek vegyes komplexitásúak: vannak köztük igazán egyszerűek (pl. passzolás), de olyanok is, ahol akár 3-4 forgatókönyv is előállhat (mozgás, pumpa összeszedése). A fő aktorok is igen változatosak: *Mechanic, Saboteur, Player, Cistern* és *Pump* fókuszú tesztek is megtalálhatóak a választott funkciók között. + +** + + *1. Mechanic standing on a punctured pipe attempts to fix it + 2. Player passes their turn + 3. Player standing on a pipe attempts to puncture it + 4. Cistern attempts to generate a pump + 5. Mechanic attempts to collect a pump from a cistern + 6. Saboteur standing on a pipe attempts to make it slippery + 7. A pump experiences a breakdown + 8. Player attempts to move from a pipe to one of its neighbouring components* + +## Tesztek specifikációja + +A tesztek specifikációja a BDD szabványt követi. Egy címmel (*Title*) kezdődik, majd a fő aktor és a teszt céljának bemutatása következik (*As a, I want, so that*). Ezután a különböző esetek (*Scenario*) leírása következik. Itt először megadjuk az előfeltételeket (*Given, and*), majd a cselekvést (*when*), végül pedig az elvárt eredményt (*then*). + +** + +**Title: Mechanic standing on a punctured pipe attempts to fix it.** + +As a Mechanic, +I want to be able to fix punctured pipes while standing on them, +so that they become functional again. + +**Scenario 1:** A Mechanic with enough AP fixes a punctured pipe while standing on it. +Given that a pipe has been punctured +and I am a Mechanic +and I am standing on the pipe +and I have enough AP left, +when I fix the pipe, +then it should be functional again. + +**Scenario 2:** A Mechanic without enough AP attempts to fix a punctured pipe while standing on it. +Given that a pipe has been punctured +and I am a Mechanic +and I am standing on the pipe +and I don't have enough AP left, +when I try to fix the pipe, +then the pipe shouldn't be fixed. + +--- + +**Title: Player passes their turn.** + +As a Player, +I want to be able to pass my turn, +so that my turn ends and the next player can start theirs. + +**Scenario 1:** A Player passes their turn. +Given that I am the active player, +when I pass my turn, +then my turn should be over. + +--- + +**Title: Saboteur standing on a pipe attempts to puncture it.** + +As a Player, +I want to be able to puncture pipes while standing on them, +so that they become non-functional. + +**Scenario 1:** A Player with enough AP punctures a working pipe while standing on it. +Given that a pipe is working +and I am standing on the pipe +and I have enough AP left, +when I puncture the pipe, +then it should be punctured. + +**Scenario 2:** A Player without enough AP attempts to puncture a working pipe while standing on it. +Given that a pipe is working +and I am standing on the pipe +and I don't have enough AP left, +when I attempt to puncture the pipe, +then the pipe shouldn't get punctured. + +**Scenario 3:** A Player without enough AP attempts to puncture a broken pipe while standing on it. +Given that a pipe is punctured +and I am standing on the pipe +and I have enough AP left, +when I attempt to puncture the pipe, +then the pipe shouldn't be punctured again. + +--- + +**Title: Cistern attempts to generate a pump.** + +As a Cistern, +I want to be able to generate pumps (one at a time), +so that they can be pe picked up and placed down by Mechanics. + +**Scenario 1:** A Cistern with no pump on it successfully generates a pump. +Given that I am a Cistern +and I have no generated pumps, +when it is time to generate a pump, +then the pump should get generated. + +**Scenario 2:** A cistern with a pump on it already attempts to generate another one. +Given that I am a Cistern +and I already have a generated pump, +when it is time to generate a pump, +then the pump shouldn't get generated. + +--- + +**Title: Mechanic attempts to collect a pump from a cistern.** + +As a Mechanic, +I want to be able to collect generated pumps (one at a time) from cisterns while standing on them, +so that I can later place them down on the map. + +**Scenario 1:** A Mechanic with enough AP and an empty inventory collects a pump from a cistern that has a generated pump. +Given that a cistern has a generated pump +and I am a Mechanic +and I am standing on the cistern +and my inventory is empty +and I have enough AP, +when I attempt to collect the pump, +then the pump should be collected. + +**Scenario 2:** A Mechanic without enough AP and an empty inventory attempts to collect a pump from a cistern that has a generated pump. +Given that a cistern has a generated pump +and I am a Mechanic +and I am standing on the cistern +and my inventory is empty +and I don't have enough AP, +when I attempt to collect the pump, +then the pump shouldn't be collected. + +**Scenario 3:** A Mechanic with a non-empty inventory attempts to collect a pump from a cistern that has a generated pump. +Given that a cistern has a generated pump +and I am a Mechanic +and I am standing on the cistern +and my inventory is not empty, +when I attempt to collect the pump, +then the pump shouldn't be collected. + +**Scenario 4:** A Mechanic with enough AP and an empty inventory attempts to collect a pump from a cistern that doesn't have a generated pump. +Given that a cistern has no generated pumps +and I am a Mechanic +and I am standing on the cistern +and my inventory is empty +and I have enough AP, +when I attempt to collect the pump, +then there is no pump to collect. + +--- + +**Title: Saboteur standing on a pipe attempts to make it slippery** + +As a Saboteur, +I want to be able to make pipes slippery, +so that other players will not be able to stay on them. + +**Scenario 1:** A Saboteur with enough AP standing on a non-slippery pipe makes it slippery. +Given that a pipe is not slippery +and I am a Saboteur +and I am standing on the pipe +and I have enough AP, +when I attempt to make the pipe slippery, +then the pipe should get slippery. + +**Scenario 2:** A Saboteur standing on a slippery pipe attempts to make it slippery again. +Given that a pipe is slippery +and I am a Saboteur +and I am standing on the pipe +and I have enough AP, +when I attempt to make the pipe slippery, +then nothing should happen, as the pipe is already slippery. + +**Scenario 3:** A Saboteur without enough AP standing on a pipe attempts to make it slippery. +Given that I am standing on a pipe +and I am a Saboteur +and I don't have enough AP, +when I attempt to make the pipe slippery, +then the pipe shouldn't get slippery. + +--- + +**Title: A pump experiences a breakdown.** + +As a Pump, +I want to sometimes break down and become non-functional, +so that I provide an extra challenge for the players. + +**Scenario 1:** A functioning pump breaks down. +Given that I am a pump +and I am functional, +when I experience a breakdown, +then I should become non-functional. + +**Scenario 2:** A non-functioning pump breaks down. +Given that I am a pump +and I am non-functional, +when I experience a breakdown, +then nothing happens, as I am already broken. + +--- + + **Title: Player attempts to move from a pipe to one of its neighbouring components.** + +As a Player, +I want to be able to move from pipes to one of their neighbouring components. + +**Scenario 1:** A non-stuck Player standing on a pipe with enough AP moves to a valid neighbouring component. +Given that I am standing on a pipe +and I am not stuck +and I have enough AP +and I intend to move to an existing neighbour, +when I attempt to move to the selected component, +then the movement should be successful. + +**Scenario 2:** A stuck Player standing on a pipe attempts to move to a valid neighbouring component. +Given that I am standing on a pipe +and I am stuck +and I intend to move to an existing neighbour, +when I attempt to move to the selected component, +then the movement should be unsuccessful. + +**Scenario 3:** A non-stuck Player standing on a pipe without enough AP attempts to move to a valid neighbouring component. +Given that I am standing on a pipe +and I am not stuck +and I don't have enough AP +and I intend to move to an existing neighbour, +when I attempt to move to the selected component, +then the movement should be unsuccessful. + +**Scenario 4:** A Player standing on a pipe attempts to move to a non-existent neighbouring component. +Given that I am standing on a pipe +and I intend to move to a non-existing neighbour, +when I attempt to move to the selected component, +then the movement should be unsuccessful. + +## Tesztek implementációjának folyamata + +Elkészült a specifikáció, itt az ideje implementálni. Ehhez az egyik legnépszerűbb BDD implementációs szoftvert, a `Cucumber`-t fogom használni. Java fejlesztőkörnyezetnek az `IntelliJ IDEA`-t választottam. + +** + +**Cucumber setup-olása** + +**Feature file-ok elkészítése** + +**Lépésdefiníciós file-ok elkészítése** + +**Lépésdefiníciók megírása** + +**Tesztek futtatása** + +**Eredmények analizálása** + +**Tanulság** + +--- +> *Készítette: Czímer Bende* From 9096e8f0a788d4c465c3eb6909b5c84d92dae44b Mon Sep 17 00:00:00 2001 From: bendi1119 Date: Fri, 17 May 2024 17:34:54 +0200 Subject: [PATCH 2/6] cucumber setup + documentation #3 --- .idea/misc.xml | 2 +- docs/BDD_DOCUMENTATION.md | 38 +++++----- docs/images/cucumberdependency.png | Bin 0 -> 9209 bytes pom.xml | 7 ++ .../compile/default-compile/inputFiles.lst | 48 ++++++------- .../default-testCompile/inputFiles.lst | 4 +- .../2024-05-17T16-53-11_124.dumpstream | 5 ++ target/surefire-reports/TEST-Tests.xml | 68 +++++++++--------- target/surefire-reports/Tests.txt | 2 +- target/test-classes/CmdInterpreter.class | Bin 31646 -> 31646 bytes 10 files changed, 95 insertions(+), 79 deletions(-) create mode 100644 docs/images/cucumberdependency.png create mode 100644 target/surefire-reports/2024-05-17T16-53-11_124.dumpstream diff --git a/.idea/misc.xml b/.idea/misc.xml index c0e11eb..e2f41df 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/docs/BDD_DOCUMENTATION.md b/docs/BDD_DOCUMENTATION.md index cb0a078..8975b0a 100644 --- a/docs/BDD_DOCUMENTATION.md +++ b/docs/BDD_DOCUMENTATION.md @@ -6,9 +6,9 @@ A feladatot három fázisra osztottam fel: - *1. A tesztelendő funkciók meghatározása - 2. A tesztelendő funkciók specifikációja a BDD szabályai szerint - 3. A specifikált esetek implementálása* +*1. A tesztelendő funkciók meghatározása +2. A tesztelendő funkciók specifikációja a BDD szabályai szerint +3. A specifikált esetek implementálása* ## Tesztelendő funkciók @@ -16,14 +16,14 @@ Teszteseteknek nyolc olyan alapvető funckiót választottam, amelyek helyes mű ** - *1. Mechanic standing on a punctured pipe attempts to fix it - 2. Player passes their turn - 3. Player standing on a pipe attempts to puncture it - 4. Cistern attempts to generate a pump - 5. Mechanic attempts to collect a pump from a cistern - 6. Saboteur standing on a pipe attempts to make it slippery - 7. A pump experiences a breakdown - 8. Player attempts to move from a pipe to one of its neighbouring components* +*1. Mechanic standing on a punctured pipe attempts to fix it +2. Player passes their turn +3. Player standing on a pipe attempts to puncture it +4. Cistern attempts to generate a pump +5. Mechanic attempts to collect a pump from a cistern +6. Saboteur standing on a pipe attempts to make it slippery +7. A pump experiences a breakdown +8. Player attempts to move from a pipe to one of its neighbouring components* ## Tesztek specifikációja @@ -104,10 +104,10 @@ I want to be able to generate pumps (one at a time), so that they can be pe picked up and placed down by Mechanics. **Scenario 1:** A Cistern with no pump on it successfully generates a pump. -Given that I am a Cistern +Given that I am a Cistern and I have no generated pumps, when it is time to generate a pump, -then the pump should get generated. +then the pump should get generated. **Scenario 2:** A cistern with a pump on it already attempts to generate another one. Given that I am a Cistern @@ -211,7 +211,7 @@ then nothing happens, as I am already broken. --- - **Title: Player attempts to move from a pipe to one of its neighbouring components.** +**Title: Player attempts to move from a pipe to one of its neighbouring components.** As a Player, I want to be able to move from pipes to one of their neighbouring components. @@ -245,14 +245,18 @@ and I intend to move to a non-existing neighbour, when I attempt to move to the selected component, then the movement should be unsuccessful. -## Tesztek implementációjának folyamata +## Tesztek implementációjának folyamata Elkészült a specifikáció, itt az ideje implementálni. Ehhez az egyik legnépszerűbb BDD implementációs szoftvert, a `Cucumber`-t fogom használni. Java fejlesztőkörnyezetnek az `IntelliJ IDEA`-t választottam. -** - **Cucumber setup-olása** +A `Cucumber` használatához szükség van `Maven` (vagy `Gradle`) setup-olására. Ez az #1 számú Issue-ban megtörtént, és mivel az Issue-hoz tartozó branch be lett mergelve a `main`-be, ezért nekem csupán annyi volt a dolgom, hogy rebaseljem a branchemet a `main`-re, majd a `pom.xml` fájlban felvegyem dependency-k közé a `Cucumber` legfrissebb (7.17.0) verzióját: + +![Cucumber dependency](images/cucumberdependency.png) + +Ezek után el is kezdhettem a tesztek implementálását. + **Feature file-ok elkészítése** **Lépésdefiníciós file-ok elkészítése** diff --git a/docs/images/cucumberdependency.png b/docs/images/cucumberdependency.png new file mode 100644 index 0000000000000000000000000000000000000000..59d26815272b44efd0c9b5d97bff78cf359c517c GIT binary patch literal 9209 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 bt~lJ45=@jN8gVzV5um25^}JZ|)yMw>;Vw_i literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index a815642..4556767 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,13 @@ 5.7.0 test + + + io.cucumber + cucumber-java + 7.17.0 + test + diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 577fda8..c91cf41 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,24 +1,24 @@ -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\GraphicsSpring.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Notifiable.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\SComponent.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\GraphicsPipe.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\GraphicsPump.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Cistern.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Scoreboard.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Saboteur.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Spring.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Pump.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\GameKeyListener.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Map.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Pipe.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Graphics.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Mechanic.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Active.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\GraphicsPlayer.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Main.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\GraphicsMap.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Passive.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\MyFrame.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\PipeState.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\Player.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\main\java\GraphicsCistern.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Spring.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\SComponent.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Passive.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\GraphicsSpring.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Notifiable.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\GraphicsMap.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Graphics.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\GameKeyListener.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Saboteur.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Scoreboard.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Pipe.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\GraphicsPlayer.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Cistern.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\GraphicsCistern.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\PipeState.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Player.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\GraphicsPipe.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\MyFrame.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Map.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Pump.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Main.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Active.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\GraphicsPump.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\main\java\Mechanic.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index 516fb60..268a746 100644 --- a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -1,2 +1,2 @@ -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\test\java\CmdInterpreter.java -D:\Egyetem\Integrációs és ellenőrzési technikák\HF\iet-hf-2024-goon-squad\src\test\java\Tests.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\test\java\CmdInterpreter.java +D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\src\test\java\Tests.java diff --git a/target/surefire-reports/2024-05-17T16-53-11_124.dumpstream b/target/surefire-reports/2024-05-17T16-53-11_124.dumpstream new file mode 100644 index 0000000..fa2d88d --- /dev/null +++ b/target/surefire-reports/2024-05-17T16-53-11_124.dumpstream @@ -0,0 +1,5 @@ +# Created at 2024-05-17T16:53:14.493 +Boot Manifest-JAR contains absolute paths in classpath 'D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\target\test-classes' +Hint: -Djdk.net.URLClassPath.disableClassPathURLCheck=true +'other' has different root + diff --git a/target/surefire-reports/TEST-Tests.xml b/target/surefire-reports/TEST-Tests.xml index 294a1fb..e458150 100644 --- a/target/surefire-reports/TEST-Tests.xml +++ b/target/surefire-reports/TEST-Tests.xml @@ -1,59 +1,59 @@ - + - - + - + - - + + - + - + - + - + - + - + - + - - + + - + + - + - + @@ -61,20 +61,20 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/surefire-reports/Tests.txt b/target/surefire-reports/Tests.txt index daba8d3..b4d348a 100644 --- a/target/surefire-reports/Tests.txt +++ b/target/surefire-reports/Tests.txt @@ -1,4 +1,4 @@ ------------------------------------------------------------------------------- Test set: Tests ------------------------------------------------------------------------------- -Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.199 s - in Tests +Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.128 s - in Tests diff --git a/target/test-classes/CmdInterpreter.class b/target/test-classes/CmdInterpreter.class index 23d6a7262f8200e094e7230629c947dac22755f3..084e9a106369218166d0a1b01982a1f0f6bec85b 100644 GIT binary patch delta 1237 zcmZ9~X>3$g7zW_;a*r^b85}kV(==v=l63Z^GZWkXXiIAoi-sU2q=@}daUv6>GnttZ z(*)|i)CKi(!=-HQD_Y#QiXbZP`&O{1xG$hkH^4LRK%)M6?)lzxa?U;9y@O*I9K)um zH4dA#3Tj*PpY2c1|a&QKZ~Bp;fM+hud88F$M5P#x};NH~al<+N}T_si;V zwSEvPAn~wg(vnP}ub9sFbbD>qCa8HPoFRw84R}QABdyphDwnf}{LUu*M z`YEWOSy&~Z=wv)2jnR5MC+9>PFf2pS7Hp9N(IB?U%-AV-NwP8b@h?M7Tinrpa@+j2 zjxG;8XQYefJ}c5T>s6?v#8Z_r9INVh4ayFCW5wL`iUyDA&>K*$QoSIP>n${R=JhVm z*{rwz7iMy1n|Gk5{A*=vrck<+&3aFw@#)ncKsidYoy)R$Zv4@aVA0Xw6ImLs$7ix3 z-h`d9JMP2h;;5a2-LkMYfiGpCHibPhT-%CoL?_ztoy@}aRV4Ay6s*_&)CT+<84oEIpr+B8wOfCe z{tLU!IwZE#OehJa;ut4gsagFRs=~bgk+$gZ<#J)BuXGu0gL0bL1=)PISY%>{npjSj znnp8nmK)URS(eS_&&>367rU7sTh15#H+PNKlk9r3o-#pCbt-E>Pm@_STZZF32cd@vK-bWvx z57CF|5Pg(BPM@St(`V`P^ac7N-A1?5SLhDE9xkatEqV-{Kr5(&PSnRKrR-+)bUi~? GD)&F@Q5t3d delta 1224 zcmZ9~X>62L6b9h?_Fm!Zbjnab!yt)MFwV5Icc#)d3e}-M3Z^VY(?}F2xP~=B*^?pC>u*{m#AjJGs3B=pDf3 zk=_c|5Ph*j7xX1V^`%bLqZdo0c2}9DFM}$X2uoifJH2k1;H||nneUx}9=mSA)iTUC z3D-)CuMyYDa^LCZ2B?V4@VRB5&+S}cH^Xke5h~2kTQwRtOJmh!+-f^k)>iq@DkQ^XY-E8PJnHp|jL99v|2U_2g{{y-Ry%JAUXcuXz`Ch)jy3i{3VqnAAt zbYq7&LqYQtl%IRFhbqi2s5pzB&=@=`>q8BAUiw34;zb!B_Ty!l7CsBF%BryY#Mhxl zo!ivuPjVjx=;GT^@TT~9B@o5ZAmU{@Yo}H8_HFzXQi?Wx*9yw z7tGIE`rZG9sjS_<2WrGIUnWvr`D89_=?|bPj>%iIxm0?tr9XlyE5>b|nH*30q!^Uj zN&C^HUsguy@tN$7Ou`r9iu&-C)J3P@8(9*K;ak}nt;P4UKbpV~60K>%0lBEA4Tq$! z#*3fjaLok#Dv{VpI4sj+mH1t9v1HM*O=LEob9=tTwl`1e@6Pd}s|(@*JM`Z@iQeogn$@92K|BRxoeqQB4q`WyX& o{zd<`ZH7UyFq$4mhtg77M$4&-R?v~=c%_uX?mWSaHe;0gAMM>Q82|tP From d965b265e4085c66dbf77bcd2feb39b1c1dfd96c Mon Sep 17 00:00:00 2001 From: bendi1119 Date: Fri, 17 May 2024 17:46:59 +0200 Subject: [PATCH 3/6] =?UTF-8?q?Dokument=C3=A1ci=C3=B3=20form=C3=A1z=C3=A1s?= =?UTF-8?q?i=20jav=C3=ADt=C3=A1sok=20#3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/BDD_DOCUMENTATION.md | 298 ++++++++++++++++++++------------------ 1 file changed, 160 insertions(+), 138 deletions(-) diff --git a/docs/BDD_DOCUMENTATION.md b/docs/BDD_DOCUMENTATION.md index 8975b0a..5bff50a 100644 --- a/docs/BDD_DOCUMENTATION.md +++ b/docs/BDD_DOCUMENTATION.md @@ -6,9 +6,9 @@ A feladatot három fázisra osztottam fel: -*1. A tesztelendő funkciók meghatározása +1. A tesztelendő funkciók meghatározása 2. A tesztelendő funkciók specifikációja a BDD szabályai szerint -3. A specifikált esetek implementálása* +3. A specifikált esetek implementálása ## Tesztelendő funkciók @@ -16,14 +16,14 @@ Teszteseteknek nyolc olyan alapvető funckiót választottam, amelyek helyes mű ** -*1. Mechanic standing on a punctured pipe attempts to fix it +1. Mechanic standing on a punctured pipe attempts to fix it 2. Player passes their turn 3. Player standing on a pipe attempts to puncture it 4. Cistern attempts to generate a pump 5. Mechanic attempts to collect a pump from a cistern 6. Saboteur standing on a pipe attempts to make it slippery 7. A pump experiences a breakdown -8. Player attempts to move from a pipe to one of its neighbouring components* +8. Player attempts to move from a pipe to one of its neighbouring components ## Tesztek specifikációja @@ -33,217 +33,238 @@ A tesztek specifikációja a BDD szabványt követi. Egy címmel (*Title*) kezd **Title: Mechanic standing on a punctured pipe attempts to fix it.** -As a Mechanic, -I want to be able to fix punctured pipes while standing on them, -so that they become functional again. + As a Mechanic, + I want to be able to fix punctured pipes while standing on them, + so that they become functional again. **Scenario 1:** A Mechanic with enough AP fixes a punctured pipe while standing on it. -Given that a pipe has been punctured -and I am a Mechanic -and I am standing on the pipe -and I have enough AP left, -when I fix the pipe, -then it should be functional again. + + Given that a pipe has been punctured + and I am a Mechanic + and I am standing on the pipe + and I have enough AP left, + when I fix the pipe, + then it should be functional again. **Scenario 2:** A Mechanic without enough AP attempts to fix a punctured pipe while standing on it. -Given that a pipe has been punctured -and I am a Mechanic -and I am standing on the pipe -and I don't have enough AP left, -when I try to fix the pipe, -then the pipe shouldn't be fixed. + + Given that a pipe has been punctured + and I am a Mechanic + and I am standing on the pipe + and I don't have enough AP left, + when I try to fix the pipe, + then the pipe shouldn't be fixed. --- **Title: Player passes their turn.** -As a Player, -I want to be able to pass my turn, -so that my turn ends and the next player can start theirs. + As a Player, + I want to be able to pass my turn, + so that my turn ends and the next player can start theirs. **Scenario 1:** A Player passes their turn. -Given that I am the active player, -when I pass my turn, -then my turn should be over. + + Given that I am the active player, + when I pass my turn, + then my turn should be over. --- **Title: Saboteur standing on a pipe attempts to puncture it.** -As a Player, -I want to be able to puncture pipes while standing on them, -so that they become non-functional. + As a Player, + I want to be able to puncture pipes while standing on them, + so that they become non-functional. **Scenario 1:** A Player with enough AP punctures a working pipe while standing on it. -Given that a pipe is working -and I am standing on the pipe -and I have enough AP left, -when I puncture the pipe, -then it should be punctured. + + Given that a pipe is working + and I am standing on the pipe + and I have enough AP left, + when I puncture the pipe, + then it should be punctured. **Scenario 2:** A Player without enough AP attempts to puncture a working pipe while standing on it. -Given that a pipe is working -and I am standing on the pipe -and I don't have enough AP left, -when I attempt to puncture the pipe, -then the pipe shouldn't get punctured. + + Given that a pipe is working + and I am standing on the pipe + and I don't have enough AP left, + when I attempt to puncture the pipe, + then the pipe shouldn't get punctured. **Scenario 3:** A Player without enough AP attempts to puncture a broken pipe while standing on it. -Given that a pipe is punctured -and I am standing on the pipe -and I have enough AP left, -when I attempt to puncture the pipe, -then the pipe shouldn't be punctured again. + + Given that a pipe is punctured + and I am standing on the pipe + and I have enough AP left, + when I attempt to puncture the pipe, + then the pipe shouldn't be punctured again. --- **Title: Cistern attempts to generate a pump.** -As a Cistern, -I want to be able to generate pumps (one at a time), -so that they can be pe picked up and placed down by Mechanics. + As a Cistern, + I want to be able to generate pumps (one at a time), + so that they can be pe picked up and placed down by Mechanics. **Scenario 1:** A Cistern with no pump on it successfully generates a pump. -Given that I am a Cistern -and I have no generated pumps, -when it is time to generate a pump, -then the pump should get generated. + + Given that I am a Cistern + and I have no generated pumps, + when it is time to generate a pump, + then the pump should get generated. **Scenario 2:** A cistern with a pump on it already attempts to generate another one. -Given that I am a Cistern -and I already have a generated pump, -when it is time to generate a pump, -then the pump shouldn't get generated. + + Given that I am a Cistern + and I already have a generated pump, + when it is time to generate a pump, + then the pump shouldn't get generated. --- **Title: Mechanic attempts to collect a pump from a cistern.** -As a Mechanic, -I want to be able to collect generated pumps (one at a time) from cisterns while standing on them, -so that I can later place them down on the map. + As a Mechanic, + I want to be able to collect generated pumps (one at a time) from cisterns while standing on them, + so that I can later place them down on the map. **Scenario 1:** A Mechanic with enough AP and an empty inventory collects a pump from a cistern that has a generated pump. -Given that a cistern has a generated pump -and I am a Mechanic -and I am standing on the cistern -and my inventory is empty -and I have enough AP, -when I attempt to collect the pump, -then the pump should be collected. + + Given that a cistern has a generated pump + and I am a Mechanic + and I am standing on the cistern + and my inventory is empty + and I have enough AP, + when I attempt to collect the pump, + then the pump should be collected. **Scenario 2:** A Mechanic without enough AP and an empty inventory attempts to collect a pump from a cistern that has a generated pump. -Given that a cistern has a generated pump -and I am a Mechanic -and I am standing on the cistern -and my inventory is empty -and I don't have enough AP, -when I attempt to collect the pump, -then the pump shouldn't be collected. + + Given that a cistern has a generated pump + and I am a Mechanic + and I am standing on the cistern + and my inventory is empty + and I don't have enough AP, + when I attempt to collect the pump, + then the pump shouldn't be collected. **Scenario 3:** A Mechanic with a non-empty inventory attempts to collect a pump from a cistern that has a generated pump. -Given that a cistern has a generated pump -and I am a Mechanic -and I am standing on the cistern -and my inventory is not empty, -when I attempt to collect the pump, -then the pump shouldn't be collected. + + Given that a cistern has a generated pump + and I am a Mechanic + and I am standing on the cistern + and my inventory is not empty, + when I attempt to collect the pump, + then the pump shouldn't be collected. **Scenario 4:** A Mechanic with enough AP and an empty inventory attempts to collect a pump from a cistern that doesn't have a generated pump. -Given that a cistern has no generated pumps -and I am a Mechanic -and I am standing on the cistern -and my inventory is empty -and I have enough AP, -when I attempt to collect the pump, -then there is no pump to collect. + + Given that a cistern has no generated pumps + and I am a Mechanic + and I am standing on the cistern + and my inventory is empty + and I have enough AP, + when I attempt to collect the pump, + then there is no pump to collect. --- **Title: Saboteur standing on a pipe attempts to make it slippery** -As a Saboteur, -I want to be able to make pipes slippery, -so that other players will not be able to stay on them. + As a Saboteur, + I want to be able to make pipes slippery, + so that other players will not be able to stay on them. **Scenario 1:** A Saboteur with enough AP standing on a non-slippery pipe makes it slippery. -Given that a pipe is not slippery -and I am a Saboteur -and I am standing on the pipe -and I have enough AP, -when I attempt to make the pipe slippery, -then the pipe should get slippery. + + Given that a pipe is not slippery + and I am a Saboteur + and I am standing on the pipe + and I have enough AP, + when I attempt to make the pipe slippery, + then the pipe should get slippery. **Scenario 2:** A Saboteur standing on a slippery pipe attempts to make it slippery again. -Given that a pipe is slippery -and I am a Saboteur -and I am standing on the pipe -and I have enough AP, -when I attempt to make the pipe slippery, -then nothing should happen, as the pipe is already slippery. + + Given that a pipe is slippery + and I am a Saboteur + and I am standing on the pipe + and I have enough AP, + when I attempt to make the pipe slippery, + then nothing should happen, as the pipe is already slippery. **Scenario 3:** A Saboteur without enough AP standing on a pipe attempts to make it slippery. -Given that I am standing on a pipe -and I am a Saboteur -and I don't have enough AP, -when I attempt to make the pipe slippery, -then the pipe shouldn't get slippery. + + Given that I am standing on a pipe + and I am a Saboteur + and I don't have enough AP, + when I attempt to make the pipe slippery, + then the pipe shouldn't get slippery. --- **Title: A pump experiences a breakdown.** -As a Pump, -I want to sometimes break down and become non-functional, -so that I provide an extra challenge for the players. + As a Pump, + I want to sometimes break down and become non-functional, + so that I provide an extra challenge for the players. **Scenario 1:** A functioning pump breaks down. -Given that I am a pump -and I am functional, -when I experience a breakdown, -then I should become non-functional. + + Given that I am a pump + and I am functional, + when I experience a breakdown, + then I should become non-functional. **Scenario 2:** A non-functioning pump breaks down. -Given that I am a pump -and I am non-functional, -when I experience a breakdown, -then nothing happens, as I am already broken. + + Given that I am a pump + and I am non-functional, + when I experience a breakdown, + then nothing happens, as I am already broken. --- **Title: Player attempts to move from a pipe to one of its neighbouring components.** -As a Player, -I want to be able to move from pipes to one of their neighbouring components. + As a Player, + I want to be able to move from pipes to one of their neighbouring components. **Scenario 1:** A non-stuck Player standing on a pipe with enough AP moves to a valid neighbouring component. -Given that I am standing on a pipe -and I am not stuck -and I have enough AP -and I intend to move to an existing neighbour, -when I attempt to move to the selected component, -then the movement should be successful. + + Given that I am standing on a pipe + and I am not stuck + and I have enough AP + and I intend to move to an existing neighbour, + when I attempt to move to the selected component, + then the movement should be successful. **Scenario 2:** A stuck Player standing on a pipe attempts to move to a valid neighbouring component. -Given that I am standing on a pipe -and I am stuck -and I intend to move to an existing neighbour, -when I attempt to move to the selected component, -then the movement should be unsuccessful. + + Given that I am standing on a pipe + and I am stuck + and I intend to move to an existing neighbour, + when I attempt to move to the selected component, + then the movement should be unsuccessful. **Scenario 3:** A non-stuck Player standing on a pipe without enough AP attempts to move to a valid neighbouring component. -Given that I am standing on a pipe -and I am not stuck -and I don't have enough AP -and I intend to move to an existing neighbour, -when I attempt to move to the selected component, -then the movement should be unsuccessful. + + Given that I am standing on a pipe + and I am not stuck + and I don't have enough AP + and I intend to move to an existing neighbour, + when I attempt to move to the selected component, + then the movement should be unsuccessful. **Scenario 4:** A Player standing on a pipe attempts to move to a non-existent neighbouring component. -Given that I am standing on a pipe -and I intend to move to a non-existing neighbour, -when I attempt to move to the selected component, -then the movement should be unsuccessful. + + Given that I am standing on a pipe + and I intend to move to a non-existing neighbour, + when I attempt to move to the selected component, + then the movement should be unsuccessful. ## Tesztek implementációjának folyamata @@ -271,3 +292,4 @@ Ezek után el is kezdhettem a tesztek implementálását. --- > *Készítette: Czímer Bende* + From 65e820d0e2c0bdbd7c93b34ea5b07dcef56aa921 Mon Sep 17 00:00:00 2001 From: bendi1119 Date: Sat, 18 May 2024 01:05:32 +0200 Subject: [PATCH 4/6] feature files + documentation #3 --- docs/BDD_DOCUMENTATION.md | 22 +++++++---- docs/images/featurefiles.png | Bin 0 -> 7498 bytes .../resources/cistern_generates_pump.feature | 14 +++++++ .../resources/mechanic_collects_pump.feature | 37 ++++++++++++++++++ .../resources/mechanic_fixes_pipe.feature | 18 +++++++++ .../resources/player_moves_from_pipe.feature | 31 +++++++++++++++ src/test/resources/player_passes.feature | 7 ++++ .../resources/player_punctures_pipe.feature | 23 +++++++++++ src/test/resources/pump_breaks_down.feature | 14 +++++++ .../saboteur_makes_pipe_slippery.feature | 25 ++++++++++++ 10 files changed, 183 insertions(+), 8 deletions(-) create mode 100644 docs/images/featurefiles.png create mode 100644 src/test/resources/cistern_generates_pump.feature create mode 100644 src/test/resources/mechanic_collects_pump.feature create mode 100644 src/test/resources/mechanic_fixes_pipe.feature create mode 100644 src/test/resources/player_moves_from_pipe.feature create mode 100644 src/test/resources/player_passes.feature create mode 100644 src/test/resources/player_punctures_pipe.feature create mode 100644 src/test/resources/pump_breaks_down.feature create mode 100644 src/test/resources/saboteur_makes_pipe_slippery.feature diff --git a/docs/BDD_DOCUMENTATION.md b/docs/BDD_DOCUMENTATION.md index 5bff50a..eb4b6b3 100644 --- a/docs/BDD_DOCUMENTATION.md +++ b/docs/BDD_DOCUMENTATION.md @@ -42,7 +42,7 @@ A tesztek specifikációja a BDD szabványt követi. Egy címmel (*Title*) kezd Given that a pipe has been punctured and I am a Mechanic and I am standing on the pipe - and I have enough AP left, + and I have enough AP, when I fix the pipe, then it should be functional again. @@ -51,7 +51,7 @@ A tesztek specifikációja a BDD szabványt követi. Egy címmel (*Title*) kezd Given that a pipe has been punctured and I am a Mechanic and I am standing on the pipe - and I don't have enough AP left, + and I don't have enough AP, when I try to fix the pipe, then the pipe shouldn't be fixed. @@ -71,7 +71,7 @@ A tesztek specifikációja a BDD szabványt követi. Egy címmel (*Title*) kezd --- -**Title: Saboteur standing on a pipe attempts to puncture it.** +**Title: Player standing on a pipe attempts to puncture it.** As a Player, I want to be able to puncture pipes while standing on them, @@ -81,7 +81,7 @@ A tesztek specifikációja a BDD szabványt követi. Egy címmel (*Title*) kezd Given that a pipe is working and I am standing on the pipe - and I have enough AP left, + and I have enough AP, when I puncture the pipe, then it should be punctured. @@ -89,7 +89,7 @@ A tesztek specifikációja a BDD szabványt követi. Egy címmel (*Title*) kezd Given that a pipe is working and I am standing on the pipe - and I don't have enough AP left, + and I don't have enough AP, when I attempt to puncture the pipe, then the pipe shouldn't get punctured. @@ -97,7 +97,7 @@ A tesztek specifikációja a BDD szabványt követi. Egy címmel (*Title*) kezd Given that a pipe is punctured and I am standing on the pipe - and I have enough AP left, + and I have enough AP, when I attempt to puncture the pipe, then the pipe shouldn't be punctured again. @@ -278,9 +278,15 @@ A `Cucumber` használatához szükség van `Maven` (vagy `Gradle`) setup-olásá Ezek után el is kezdhettem a tesztek implementálását. -**Feature file-ok elkészítése** +**Feature file-ok elkészítése és feltöltése** + +A teszteléshez szükséges `.feature` fájlokat a `src > test > resources` mappában hozom létre, mind a 8 tesztelendő funkciónak külön fájlt biztosítva. Ezekbe a fájlokba bemásolom a specifikált teszteseteket, majd egy-két helyen módosítom őket, hogy a fordító számára értelmezhető legyen a bemenet (sorok elején nagy kezdőbetű, Title helyett Feature, Scenario-k sorszámának törlése, egyéb kis formázások). + +Végeredményül az alábbi fájlokat kapom: + +![Feature files](images/featurefiles.png) -**Lépésdefiníciós file-ok elkészítése** +Eljött az idő a lépések definiáláshoz. **Lépésdefiníciók megírása** diff --git a/docs/images/featurefiles.png b/docs/images/featurefiles.png new file mode 100644 index 0000000000000000000000000000000000000000..b3abc505aa42e8100bfc6c7957b9bec8df196e21 GIT binary patch literal 7498 zcmbVxcR1VK|94bdcdKa8QX|@;YS*YnG?c16D)uh5)rb{a%iXF`YOg3ojaoMqVyl%} zQIrrPwwe(n8iZeZf3N5HJ=gDg{&=qEkK~+_b6xqI^S)l^HO?pInVve+Wv z=B_^q&PdW*h<%?aeJ zQ})l?by=^Y0tzEIw=Qfp>y&=INGA7`PS-Zzu8i*8EV=a2yYIP2Do>ugv{$(CSw}$Y zj<^BqW59Xl$A?qR^voTzb}WEz^yK3a?{0dsXP)&8WYU^P>3-W02j2B60HB(hNmZgX ztOCM-$3@D?=K!kNH5MsHxob?v594OFqQa4yeutl^0KoG_&dnqvu;UM3G*hrs86=1f za5p+BzR1V$;0m$KNys7Q8R=_|z0@!dy;2h9a5XDp1m4wUf>mBMbMK_A3GpriBMBC#PA@C!uB)1vAM5ENo!FQ zs}{l&#hMh6?1R0TqPg}H;y!&_M-1?*LxUpiO3EW5G9_%QqxGJ}r{te@ zpFC`YP#cZ4-l>wlF#*lZ3rpL>4~N&QAB6|M7(G0DppQTDR6gB(_lE69Lwmy$rTkPK z&WJ!iqbSThTAfa%O}qwn&acc1d^yBcdXSP*<3gkAg_ScfW}6PVp=4OrDTOU%wfh%Z z_;^NYQ~u+QHFz<;qT5A?z-7$KRw#IkmDsa4N;@o-p_Rm?V{!%-UKJ2^TD+G?zA=)g z7nYLVHlw9DT^^y6=AqzwkncOIt~gP{Ift?=_VVan@zeI4W}M91wGWu?tk)zoCHl(F z;?_LVJb9$7+@ZYwxJ}EvO{-Td*BAjQ7&EH*AofdTQmTUHc4%*jk*dvCha64Nvfhna+rzm(EyH+@;uu zyEqm`kCdOe&cN?yw#VNtw}!4v8CSth-j3tHm;B4}}^iK)3lMD1GA+Z*PQaje1*+|_1p`+u!Gc-b~fPnnuO!}ZWj9xLdPJqL}f(<;e`MG%wAiE z8~(n2?Zq1|-PY7k71s(6i0muH?naX@zY8xe;QN16+)J^PD{b;j)|`Mzk7;IG#u%)q zMfrqU5$Ak5u$em4JE&x_qt*CjQM;4PgYqYWdf{TQ@a!AImL98e zs|4=ac#G!g=gEzYmv0< z&=dFTy;&5q2QXi{>0rU@}TWvfRZ&9qV)j_ro&gV9pm7oY_prrmEu_@rH&aH%VDRi?s?ViK40 zNGzKuVQFl|l45~?E)ue4TVl$)0pqG`b|UrlP78{N7Yjc$H1vY2=lPRdx$jJ{2_%Sb zG&O10Re&9RwuNw+ki0^35pyXx$=#dx?Z|1iBI@Q$yGYnrj!8rYMYr?N|7Jv;E;Ra~ z^YWQe*gnU>l4SMBI!oe+FE(*xbX)#tbmgnx_6oP(N;zMw@bk3QhKgG2L4kWIGG+e& zy$#qmjjRWMd~yt#j?2pAY~)K#)EkeJ#loKkXgW?am$MLVL2Y$=Qi(l&76H>n?uBLIK36xBhoKezHkXgKg z*&g*%6p#2V-{!oLMd~8kEY#c>iL+;y5!BC*iVMFqR21#SQ2|#W7Lq-|_ozRoLipr| z%x{}}E^YJnH{jn+C?67k9#`-Jf0qiDo?bFlhfjBsbUDdOCpVdB#|U+^kmEEYE4i7> zks3Slb7*a6q>#cJe4MEG;ZQ?L9}m)Ds1L*Rw`i`YsJOaVH=7p>k-&n*kp9)pMRr34 zy?eh=jqEGw6+_*9ew(??d0^wizTSK0^R?&XajA&`V@rXr!zQ}(2P3I1kXrG9q(V@@ zw+D;nT37D75v!s~{Mz!qQ;@nyug-4#u)DmPOS3mdCkIb+(%Q~Tk?ei zKI)BZt=Cxz%udx7b4^`$Ul=ogCjJt-4{8Y%kxcK{4!H6}=Tg9xY$YYZ#H^XBXO0q{ zY1Po*v@Hm~D_bO98Opo9tuUFdC8*|a16ZvF8oIzgCIiDJW)(%{Mn1Yh>!fsL&}?R4)^01MNZuWOCmIEV?Ymgpkq^iPZt4+>YLhF&6b&=5Lwrj(}y#z~a zG43zfjmP8mhMB@+`fVo>d+QxY6`KK>F87nOpM%ti;;al#6%GToZ;+7Nh4(J<3qv0Nv0q#|hX6p*Ma|2AtF9l4 z{&#mC^l%=;aI3!q#*CH+B&ki?o#R;p#52&4)9Qy{q2H9)Tv&IY=-aEUSi{kZTLJO> z-gzu<>owgZdDjezGT@L{9hJxwctuy3;#J&TVG!oquUE&RSLZ=|9WV*J;FLn;e1G~% z7y^sIPa=axd1vD?U4t8u3XrK$j-77)xezdQd1x&gv$X?meY6;FYYq>=B`#FoH`u0^ z*)u$gKv@7 z7ap@zedTShH3_je^$Um)>VA4dR{YW!gN;NWYS{Q?PRg1hR!)@tKP{f_l(SfMgjIDcHx46pp@lw(1{od}Btl{< zMks{+0MFo^ci8p2`On-F7$W-H@Dtw7lsVO@lvmCtuI}Cb2hi-n2cmN3SaHLu2YoNZlQTO>ad2Mc-=x=g zcia?%-Qr=T`{1hsj2Z*FQQ~`#E2o0cMFC-Mn~0++cfPUC)~JK6_ZPA;mU*Y^k^Un@ z^lT-g#72`{dnR9-$LP--4QR@_WcExD4T@s_f=q4mjW6Kw!M_23>%X%A*ER=cfd)IA zOK#C0_#L?@=)79uc}09YEpP$d2=-KmzYO-P@{_#i8qKkrsLtn65>nnyy#z5E)J9W0 zaoJ=detn$v0c@4a)I+-k;z$bh3Vz*s2FT z443dFa7OOVGMo~_E{rO0gD{0rJfDPTB8n`S;~#23<-8I57nCf}jkdX85_|;y<&PwK ze&PB5kjFnz2EaR64JhE1M${h{`=4$hwUbs?fGT%o3j3dy&m;PhH-i2?&?TpcjDukw zaxsq?C~B&Xh+>NAQDcQM^_m+P8J6Xod|7NgleCEXP3|rqOUF&|YIuyV7k6p%v zD1HK~t>!ag@avsQHMFX$tAo~)M&Ga>a*Iq=ydHlZbR5HM14E5PU*K7L5`bvnnSQ%+ zul)t3s+o6+scd)1#PXw;{L_CR3;rx;$iDt5X8nM*<~mcIFLVBA1)Cd%F}pP+a)v@p zko*{R2EX&-jfbU>a<%EcJZg+Tx}Lub0z)vMP=Eex9hhwqKP~u9I_{Fl>=%o^@7Rdh zJ%{7zOSsuz-{wf{S?(qfo(L5y*|47CdC3fBL4D`olH+EDVw1ct$RR$|7@CRZl5Iek zD61KaidznU4)5~fBAiw2uH~n5mV)$Dtb~5O&+4Z-vMDuP2|tP`%k&_5&U9OT%|(cECYww2wpk4whza|41!R2 zwW-kT%Df(*AdSiw=QH32_0F!VM%PTFGm`+ zL+lOrGZ=pG7k_)L5H|BePE*R4#%rP|6g^_uN5p_#$Qsr_As&{VVD%s|*UJ-1mMz|j zhM#s`gmvm)A6k78UL!wt<8*yn^035Nhn^mOgrZx|)m2LHZM+3OFC!4qnKHFSa?E=E z%*eLduC?kp=$7Wx!4inCw@(Z!h`9!-ZKs-EFW(sf_jUb~N2H81!H)tX1s(vR5Q8n8 z1Bcg#mbp^VJ@;9SY$XNCTwec+KMP3&J)nT)-xzi4|43Br-hU)*L~WBsDYRDozom_) zQtEO04PoBlQUB2JNz*FcJ!Vf(yK>%tMh|Ecr>~Z*=+TYS!?QQl?NWwvCh*sqsLKg! zEo0^qXSbR}B_i4z*;o+xd|TSN&e4Yy`_!vcTPbQY@ac|K>xZimgLNcIdEanfSG!-+vHTt~`|{+wt%8t59E6Y`vW4HB1 z5FEYC9UYxFgEv_s%`T$syJpLO%%4TFZnHPGxaTf^ z3S3kC_=)n>wV(IpcmI^8Ry7Bs4Wm4^V-xr`=|+uE_0o5wfO|~?^1CjtyOhoOZlltm zUV|*%v5^ev+K*cmn)+2)4if%KCT!8Wv7-8YJJgY4x4=BryrkAt0MgcJ7ddd@#K>bP8>Tgz4Q^0v5A zPY5Y`?bl#5`W)NOf9Cx&5nrDJ&$)xgkJPT7%I|?ALaMC+uP)K?m(g)L{9K&Lk$s7l zSA#wu{r|ILG|UQdw8fqMxOxl>CsUvP5lYIu>Vs>R8=0fec2F7c-LB!b>VE;uu+cHx zme&ERN?K~6ASz>EUJ9POe+S~hq2ETUP_w@&7QtkjuGyfi@dl;k8Q22Z^VdbX8CBPlX~;B*i;iG2tRtq ztqU9ppQt+)1{Sv;&Pf=!O6fLcUA*p@C5z;2(7x(;gUzVP7@0isCsc~3EYCi;=4FU; zddFC$dRX-?4twZe99PC&gRgV#32N2qbA;K&ZY|TIYWn!a)1X>o4z#3UjX{Z!X^)Xc zU%*ss>lU_G5SGL-Fccg~dhliYKthP^Z!e{|)_AguMPvpJBNY1^C0YZ7$!>A z_#sN+^vh(4PqSJXM~TZ^g1Ur@FOaV`WM&{^j?22qU@OGD+BV`~$Jx>O2z;^?a-j%L zQ{F_5FWWyqE8V?GJAkjO9Ccd_jwUg>mM#ARCnOd&b6XnTaVia$ zDg)Iigw3V{yFWip^2jWZCnA>I2`hrmGvT|kHN|)5j8af}zI@Ry`jSW?rtN!*!`H6! z!cl>El24rsrp-G&k%Q)@)V4u{UL>9*;yAqKlCCw{_KO?`Pc#0)U)u6%`Nz(Ie*+e6 zn||xaYe?>?NO0fEg;1%d#gmD&yITjt-xCxbbnaEn$W3vtY;legXe8?eH?1vJM$H0V zXEzDl_JRwXw#`Q)a+>dPusL0KC34Ju%y6Vk%(SG$B}?^ZLE1%k*T=BA^3GwxPh@VE z1@|?!sc37zs3OD$;J%w#I1SaKD8HvNt(GzG9E{s~NRvlKPvwfOddA5~1%z;65 z+n)@;m}t#OaBv38=H_bmPnTxY5h+=;>&RYeqkphlIHfXHwRd_k(pk4Uvo>u%pt0@s z*GK&{Xp-k(z)r_mws!EzGckNdwPpO3aGN5JBp_H_57N49Wh?QtQP4f5J+xp-C_wDy zvAiB@<5N*j;LG%e!1HUN<`=x;{`OZvw0YRtEHLS>&x_HFD9{}P`93nB1lHB&_8ofa z+pA+?coArwOPzP6G%GPlmsDQs9?^D{#s;h$E)e~@@a1TC-IE!^xS!d$zk8dRBYyS| zJjfo8%yFJFuC`f?pme(S>)uffFlIM7v0QP zK1yD(DXeG}>aTfCq}Ox4K0sPm0!nAQC;}YZts1% z_H*5Hx^&}8mq5rgE!-_Fg0Qz6nIb>O2){q@JfW7#{6#Un#J1%@%aY$<%y;AZNcCMX z#Scq}N3(OU!@XG!QIBqDPk>M6Rw7rv2PhyZW;?YBLemZpDz_(0U>@+cX}JN>Ky221 zX1}vc^CvUY?{}_SmNd-H>M8NHm|n@Hb_BLot>l`iPX}XfvNu!+&HFE7-N=j=dpLRs z<0kFjU2_9l{F>F6t~DE?|E!VsPo~{jB9jlJLYmPln)3^XWFI$6$77-c_o97`)%5Az zbN+;2PKGA0!B|f}M&sd-XMCb$%TiQk{^U^%I=FJ@tW+z}D@(k+`PSFW{84dB1@R9F zUoIWiyXO?WT?8G%LXMkj!e*9~!wGsvWQS&}>9*1k>=XGPRC^QuLTw`mK{>2q((BWr zeWd-S5D@F$LzQ4vOP72(&$y07;l5F91E_Io~cJ^qce=8hD&UQ8hu27sHau z{%QZXH81C5?*`Ae^h0lrM~IY?t>N;>@Xd!3ckk7QFD@iO7o4mT^voJwuBRBQiOix+ zAP>8~HmnuWE+YaH_L&>t`P|cJ2yp&zrxTmP+lhqSv*Y~*nVEyk{$izV*PAaoE4H+! z=X{S`;G@+W5ej;-K8)gF(urR}m6G-q$eF>@NNbRDv6ip}F7va`L~7n{%)TacjiAN4 z`)h*&*Z=U1(FC~rgYrvzg2TYcSvS~cNFb%1ekbtl>ToRO^xH*a5vecxk%hmNe5LhB zZpo{|C9bQ1kpWn(Iz#ps54yM%*K9ItZ}27dl%gz(q2s{`#fGvW7Cc@}Y6_MU>|)LK z;znS`e1*lD*n3J5;r+on2p2)A>?Fq4T2J?p3=WmnYaE7_H_x{FyYl5M9An$%gvnOv z%)D$K&HTj)c`@!q{Hu=yn~#P=Qak)Z4y`S%E{DzBj6%-i6V^6G=7y&?*R7qO&72b7 zt=ERVTtiBWoCtogKiiP-z^AiZ0#DE4(1(+ocOXG6p2kV^)5B6EUtyhgG9yixsI+?> zmk*5JE(buzeYylnF?PLOdHs%Z#y5yUEPtd*pd8kJV{|Vu)|R>;58hv>iP3pBA^VBs zA$a1uOqwVOIF5;U8Swfx+e(`^f618$<0{)_HR!Fq(gcmS@;(NFr5NR<1*^V8_dgDw l&n~Cn;{VXMzn&bN Date: Sat, 18 May 2024 04:00:38 +0200 Subject: [PATCH 5/6] step definitions + running tests + documentation #3 --- docs/BDD_DOCUMENTATION.md | 16 +- docs/images/bddtestresults.png | Bin 0 -> 31393 bytes docs/images/failedbddtest.png | Bin 0 -> 159385 bytes docs/images/runbddtest.png | Bin 0 -> 30124 bytes src/test/java/StepDefinitions.java | 306 ++++++++++++++++++ .../resources/mechanic_fixes_pipe.feature | 2 +- .../resources/player_moves_from_pipe.feature | 16 +- .../resources/player_punctures_pipe.feature | 4 +- .../saboteur_makes_pipe_slippery.feature | 3 +- .../default-testCompile/createdFiles.lst | 1 + .../2024-05-18T02-05-45_597.dumpstream | 5 + target/surefire-reports/TEST-Tests.xml | 28 +- target/surefire-reports/Tests.txt | 2 +- target/test-classes/StepDefinitions.class | Bin 0 -> 11427 bytes .../cistern_generates_pump.feature | 14 + .../mechanic_collects_pump.feature | 37 +++ .../test-classes/mechanic_fixes_pipe.feature | 18 ++ .../player_moves_from_pipe.feature | 31 ++ target/test-classes/player_passes.feature | 7 + .../player_punctures_pipe.feature | 23 ++ target/test-classes/pump_breaks_down.feature | 14 + .../saboteur_makes_pipe_slippery.feature | 26 ++ 22 files changed, 525 insertions(+), 28 deletions(-) create mode 100644 docs/images/bddtestresults.png create mode 100644 docs/images/failedbddtest.png create mode 100644 docs/images/runbddtest.png create mode 100644 src/test/java/StepDefinitions.java create mode 100644 target/surefire-reports/2024-05-18T02-05-45_597.dumpstream create mode 100644 target/test-classes/StepDefinitions.class create mode 100644 target/test-classes/cistern_generates_pump.feature create mode 100644 target/test-classes/mechanic_collects_pump.feature create mode 100644 target/test-classes/mechanic_fixes_pipe.feature create mode 100644 target/test-classes/player_moves_from_pipe.feature create mode 100644 target/test-classes/player_passes.feature create mode 100644 target/test-classes/player_punctures_pipe.feature create mode 100644 target/test-classes/pump_breaks_down.feature create mode 100644 target/test-classes/saboteur_makes_pipe_slippery.feature diff --git a/docs/BDD_DOCUMENTATION.md b/docs/BDD_DOCUMENTATION.md index eb4b6b3..086f71e 100644 --- a/docs/BDD_DOCUMENTATION.md +++ b/docs/BDD_DOCUMENTATION.md @@ -290,9 +290,23 @@ Eljött az idő a lépések definiáláshoz. **Lépésdefiníciók megírása** +Az IntelliJ segítségével szerencsére egyszerűen legenerálható a `StepDefinitions.java` file, amely már tartalmazza az implementálandó lépések vázát (illetve új lépések is könnyen hozzáadhatók). Ezekben a generált függvényekben megírom a szükséges lépések implementációját. A függvényekbe kerülhetnek a CmdInterpreter osztály megfelelő parancsvégrehajtásai, értékadás segédváltozóknak (pl. aktív játékos eltárolása), illetve a *Then* típusú függvényekbe a a jUnit-ból már ismert *assertEquals* / *assertTrue*, amelyek segítségével ellenőrzni tudom, hogy a lépések eredményeként az elvárt kimenetet kapjuk-e. Extra lépésként kicsit módosítok a feature fájlokban definiált prekondíciók közül is néhányon (vagy a sorrendjükön), hogy csökkentsem a redundanciát. Pl.: a specifikációban különböző eseteknél az "I fix the pipe" és az "I try to fix the pipe" lépés is megtalálható, de mivel mindkettő esetén ugyanaz a parancs hajtódik végre a háttérben, ezért elég hogyha csak az egyik szerepel a feature fájlban. + **Tesztek futtatása** -**Eredmények analizálása** +Miután egy funkció feature file-ja és a mögöttes lépésdefiníciók is rendelkezésre állnak, futtathatjuk az adott tesztet az IntelliJ segítségével. Ehhez egyszerűen jobb egérgombbal rákattintok a teszthez tartozó `.feature` file-ra, majd a megjelenő menüben a `"Run: Feature (...)"` opciót választom: + +![Run BDD test](images/runbddtest.png) + +Ekkor (hogyha mindent jól csináltam) megjelenik egy `Test Result` terminál ablak, ahol láthatom a teszt futásának eredményét: + +![BDD test results](images/bddtestresults.png) + +Ha a teszt futása sikertelen (pl. elírtam a CmdInterpreter valamelyik parancsát), akkor a terminálnak valami ilyesmit kell mutatnia: + +![Failed BDD test](images/failedbddtest.png) + +**Eredmények** **Tanulság** diff --git a/docs/images/bddtestresults.png b/docs/images/bddtestresults.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbe8f88d9b367e3cb75e64c4ec4f836f99a98d0 GIT binary patch literal 31393 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 literal 0 HcmV?d00001 diff --git a/docs/images/failedbddtest.png b/docs/images/failedbddtest.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6e3d182714d101f0618e83d9301d001808ef54 GIT binary patch literal 159385 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
  • 8SfEJDj?PJ0((z**$?AsiC)-~m` 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

    ZeHK^ruMS&dT0`OE`N!o)6Lw)W^SiDOa(6 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 duin1I(iwXs|fD6!~}MVIc0 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 literal 0 HcmV?d00001 diff --git a/src/test/java/StepDefinitions.java b/src/test/java/StepDefinitions.java new file mode 100644 index 0000000..91ea1c4 --- /dev/null +++ b/src/test/java/StepDefinitions.java @@ -0,0 +1,306 @@ +import io.cucumber.java.Before; +import io.cucumber.java.en.And; +import io.cucumber.java.en.Given; +import io.cucumber.java.en.Then; +import io.cucumber.java.en.When; + +import java.util.Objects; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class StepDefinitions { + + CmdInterpreter cmd = new CmdInterpreter(); + String activePlayer = ""; + String activeComponent = ""; + String testResult = ""; + String neighbourComponent = ""; + + @Before + public void setup() { + cmd.NewCommand("Load:testmap.txt"); + activePlayer = ""; + activeComponent = ""; + testResult = ""; + neighbourComponent = ""; + } + + @Given("that a pipe has been punctured") + public void thatAPipeHasBeenPunctured() { + activeComponent = "pi1"; + cmd.NewCommand("ChangeBreakState:"+activeComponent+",broken"); + } + + @And("I am a Mechanic") + public void iAmAMechanic() { + activePlayer = "me1"; + } + + @And("I am standing on the pipe") + public void iAmStandingOnThePipe() { + if(Objects.equals(activePlayer, "")) + { + activePlayer = "me1"; + } + activeComponent = "pi1"; + cmd.NewCommand("SetPlayerPos:"+activePlayer+","+activeComponent); + } + + @And("I have enough AP") + public void iHaveEnoughAP() { + cmd.NewCommand("SetAP:"+activePlayer+",10"); + } + + @When("I fix the pipe") + public void iFixThePipe() { + testResult = cmd.NewCommand("PlayerSimpleAction:"+activePlayer+",fix"); + } + + @Then("it should be functional again") + public void itShouldBeFunctionalAgain() { + assertEquals("[SIKERES] A(z) "+activePlayer+" jatekos megszerelte a komponenst, amin all", testResult); + } + + @And("I don't have enough AP") + public void iDonTHaveEnoughAP() { + cmd.NewCommand("SetAP:"+activePlayer+",0"); + } + + @Then("the pipe shouldn't be fixed") + public void thePipeShouldnTBeFixed() { + assertEquals("[HIBA] A jatekosnak nincs eleg AP-je a muvelet elvegzesehez!", testResult); + } + + @Given("that I am the active player") + public void thatIAmTheActivePlayer() { + activePlayer = "me1"; + } + + @When("I pass my turn") + public void iPassMyTurn() { + testResult = cmd.NewCommand("PlayerSimpleAction:"+activePlayer+",pass"); + } + + @Then("my turn should be over") + public void myTurnShouldBeOver() { + assertEquals("[SIKERES] A(z) "+activePlayer+" jatekos passzolt", testResult); + } + + @Given("that I am a Cistern") + public void thatIAmACistern() { + activeComponent = "ci1"; + } + + @And("I have no generated pumps") + public void iHaveNoGeneratedPumps() { + cmd.NewCommand("ToggleRandom:false"); //véletlenszerű eventek letiltása, a ciszternán így nem generálódhat pumpa + } + + @When("it is time to generate a pump") + public void itIsTimeToGenerateAPump() { + testResult = cmd.NewCommand("GeneratePump:"+activeComponent); + } + + @Then("the pump should get generated") + public void thePumpShouldGetGenerated() { + assertEquals("[SIKERES]: Pumpa sikeresen legeneralva!", testResult); + } + + @And("I already have a generated pump") + public void iAlreadyHaveAGeneratedPump() { + cmd.NewCommand("GeneratePump:"+activeComponent); + } + + @Then("the pump shouldn't get generated") + public void thePumpShouldnTGetGenerated() { + assertEquals("[HIBA]: nem lehet letrehozni a pumpat a "+activeComponent+" komponensen, mert mar van rajta egy masik", testResult); + } + + @Given("that a cistern has a generated pump") + public void thatACisternHasAGeneratedPump() { + activeComponent = "ci1"; + cmd.NewCommand("GeneratePump:"+activeComponent); + } + + @And("I am standing on the cistern") + public void iAmStandingOnTheCistern() { + activePlayer = "me1"; + cmd.NewCommand("SetPlayerPos:"+activePlayer+","+activeComponent); + } + + @And("my inventory is empty") + public void myInventoryIsEmpty() { + cmd.NewCommand("SetPlayerPos:"+activePlayer+",pi3"); //Player gets moved to a Pipe + cmd.NewCommand("PlayerSimpleAction:"+activePlayer+",place"); //Player attempts to place down pump (if he has a pump, it will be placed down, so now his inventory is empty) + cmd.NewCommand("SetPlayerPos:"+activePlayer+","+activeComponent); //Player gets moved back to the Cistern + } + + @When("I attempt to collect the pump") + public void iAttemptToCollectThePump() { + testResult = cmd.NewCommand("PlayerSimpleAction:"+activePlayer+",collect"); + } + + @Then("the pump should be collected") + public void thePumpShouldBeCollected() { + assertEquals("[SIKERES] A(z) "+activePlayer+" jatekos osszeszedett egy pumpat", testResult); + } + + @Then("the pump shouldn't be collected") + public void thePumpShouldnTBeCollected() { + assertTrue(testResult.contains("[HIBA]")); + } + + @And("my inventory is not empty") + public void myInventoryIsNotEmpty() { + cmd.NewCommand("SetItem:"+activePlayer); + } + + @Given("that a cistern has no generated pumps") + public void thatACisternHasNoGeneratedPumps() { + cmd.NewCommand("ToggleRandom:false"); //véletlenszerű eventek letiltása, a ciszternán így nem generálódhat pumpa + activeComponent = "ci1"; + } + + @Then("there is no pump to collect") + public void thereIsNoPumpToCollect() { + assertEquals("[HIBA] A jatekos jelenlegi poziciojan nincs generalt pumpa!", testResult); + } + + @Given("that a pipe is not slippery") + public void thatAPipeIsNotSlippery() { + activeComponent = "pi1"; + cmd.NewCommand("ChangePipeState:"+activeComponent+",Normal"); + } + + @And("I am a Saboteur") + public void iAmASaboteur() { + activePlayer = "sa1"; + } + + @When("I attempt to make the pipe slippery") + public void iAttemptToMakeThePipeSlippery() { + testResult = cmd.NewCommand("PlayerSimpleAction:"+activePlayer+",slippery"); + } + + @Then("the pipe should get slippery") + public void thePipeShouldGetSlippery() { + assertEquals("[SIKERES] A(z) "+activePlayer+" jatekos csuszossa tette a komponenst, amin all", testResult); + } + + @Given("that a pipe is slippery") + public void thatAPipeIsSlippery() { + activeComponent = "pi1"; + cmd.NewCommand("ChangePipeState:"+activeComponent+",Slippery"); + } + + @Then("nothing should happen, as the pipe is already slippery") + public void nothingShouldHappenAsThePipeIsAlreadySlippery() { + assertEquals("[HIBA] Ez a tipusu komponens nem teheto csuszossa! (Elvart: Pipe)", testResult); //Egy picit csalóka, de ez a helyes hibaüzenet + } + + @Then("the pipe shouldn't get slippery") + public void thePipeShouldnTGetSlippery() { + assertEquals("[HIBA] A jatekosnak nincs eleg AP-je a muvelet elvegzesehez!", testResult); + } + + @Given("that I am a pump") + public void thatIAmAPump() { + activeComponent = "pu1"; + } + + @And("I am functional") + public void iAmFunctional() { + cmd.NewCommand("ChangeBreakState:"+activeComponent+",breakable"); + } + + @When("I experience a breakdown") + public void iExperienceABreakdown() { + testResult = cmd.NewCommand("BreakPump:"+activeComponent); + } + + @Then("I should become non-functional") + public void iShouldBecomeNonFunctional() { + assertEquals("[SIKERES] "+activeComponent+" komponens elrontva", testResult); + } + + @And("I am non-functional") + public void iAmNonFunctional() { + cmd.NewCommand("ChangeBreakState:"+activeComponent+",broken"); + } + + @Then("nothing happens, as I am already broken") + public void nothingHappensAsIAmAlreadyBroken() { + assertEquals("[HIBA] "+activeComponent+" nem rontható el, mivel már elromlott", testResult); + } + + @Given("that I intend to move to an existing neighbour") + public void thatIIntendToMoveToAnExistingNeighbour() { + activePlayer = "me1"; + neighbourComponent = "pu1"; + } + + @And("I am not stuck") + public void iAmNotStuck() { + cmd.NewCommand("UnstickPlayer:"+activePlayer); + } + + @When("I attempt to move to the selected component") + public void iAttemptToMoveToTheSelectedComponent() { + testResult = cmd.NewCommand("MovePlayer:"+activePlayer+","+neighbourComponent); + } + + @Then("the movement should be successful") + public void theMovementShouldBeSuccessful() { + assertEquals("[SIKERES]: "+activePlayer+" sikeresen atlepett a "+neighbourComponent+" komponensre!", testResult); + } + + @And("I am stuck") + public void iAmStuck() { + cmd.NewCommand("MovePlayer:"+activePlayer+","+neighbourComponent); //Temporarily move player to neighbouring component + cmd.NewCommand("ChangePipeState:"+activeComponent+",Sticky"); //Turn the pipe sticky + cmd.NewCommand("MovePlayer:"+activePlayer+","+activeComponent); //Move player back to pipe, so he gets stuck + } + + @Then("the movement should be unsuccessful") + public void theMovementShouldBeUnsuccessful() { + assertTrue(testResult.contains("[HIBA]")); + } + + @And("that I intend to move to a non-existing neighbour") + public void thatIIntendToMoveToANonExistingNeighbour() { + neighbourComponent = "pu100"; + } + + @Given("that a pipe is working") + public void thatAPipeIsWorking() { + activeComponent = "pi1"; + cmd.NewCommand("ChangeBreakState:"+activeComponent+",breakable"); + } + + @When("I puncture the pipe") + public void iPunctureThePipe() { + testResult = cmd.NewCommand("PlayerSimpleAction:"+activePlayer+",puncture"); + } + + @Then("it should be punctured") + public void itShouldBePunctured() { + assertEquals("[SIKERES] A(z) " + activePlayer + " jatekos kiszurta a komponenst, amin all", testResult); + } + + @Then("the pipe shouldn't get punctured") + public void thePipeShouldnTGetPunctured() { + assertEquals("[HIBA] A jatekosnak nincs eleg AP-je a muvelet elvegzesehez!", testResult); + } + + @Given("that a pipe is punctured") + public void thatAPipeIsPunctured() { + activeComponent = "pi1"; + cmd.NewCommand("ChangeBreakState:"+activeComponent+",broken"); + } + + @Then("the pipe shouldn't be punctured again") + public void thePipeShouldnTBePuncturedAgain() { + assertEquals("[HIBA] A komponenst nem lehet kiszurni (vagy mar ki van szurva)!", testResult); + } +} diff --git a/src/test/resources/mechanic_fixes_pipe.feature b/src/test/resources/mechanic_fixes_pipe.feature index e548581..1317c1b 100644 --- a/src/test/resources/mechanic_fixes_pipe.feature +++ b/src/test/resources/mechanic_fixes_pipe.feature @@ -14,5 +14,5 @@ Feature: Mechanic standing on a punctured pipe attempts to fix it. And I am a Mechanic And I am standing on the pipe And I don't have enough AP - When I try to fix the pipe + When I fix the pipe Then the pipe shouldn't be fixed \ No newline at end of file diff --git a/src/test/resources/player_moves_from_pipe.feature b/src/test/resources/player_moves_from_pipe.feature index cc59d41..4597390 100644 --- a/src/test/resources/player_moves_from_pipe.feature +++ b/src/test/resources/player_moves_from_pipe.feature @@ -2,30 +2,30 @@ Feature: Player attempts to move from a pipe to one of its neighbouring componen As a Player, I want to be able to move from pipes to one of their neighbouring components. Scenario: A non-stuck Player standing on a pipe with enough AP moves to a valid neighbouring component. - Given that I am standing on a pipe + Given that I intend to move to an existing neighbour + And I am standing on the pipe And I am not stuck And I have enough AP - And I intend to move to an existing neighbour When I attempt to move to the selected component Then the movement should be successful Scenario: A stuck Player standing on a pipe attempts to move to a valid neighbouring component. - Given that I am standing on a pipe + Given that I intend to move to an existing neighbour + And I am standing on the pipe And I am stuck - And I intend to move to an existing neighbour When I attempt to move to the selected component Then the movement should be unsuccessful Scenario: A non-stuck Player standing on a pipe without enough AP attempts to move to a valid neighbouring component. - Given that I am standing on a pipe + Given that I intend to move to an existing neighbour + And I am standing on the pipe And I am not stuck And I don't have enough AP - And I intend to move to an existing neighbour When I attempt to move to the selected component Then the movement should be unsuccessful Scenario: A Player standing on a pipe attempts to move to a non-existent neighbouring component. - Given that I am standing on a pipe - And I intend to move to a non-existing neighbour + Given that I intend to move to a non-existing neighbour + And I am standing on the pipe When I attempt to move to the selected component Then the movement should be unsuccessful \ No newline at end of file diff --git a/src/test/resources/player_punctures_pipe.feature b/src/test/resources/player_punctures_pipe.feature index 4fe9dfb..e25b65e 100644 --- a/src/test/resources/player_punctures_pipe.feature +++ b/src/test/resources/player_punctures_pipe.feature @@ -12,12 +12,12 @@ Feature: Player standing on a pipe attempts to puncture it. Given that a pipe is working And I am standing on the pipe And I don't have enough AP - When I attempt to puncture the pipe + When I puncture the pipe Then the pipe shouldn't get punctured Scenario: A Player without enough AP attempts to puncture a broken pipe while standing on it. Given that a pipe is punctured And I am standing on the pipe And I have enough AP - When I attempt to puncture the pipe + When I puncture the pipe Then the pipe shouldn't be punctured again \ No newline at end of file diff --git a/src/test/resources/saboteur_makes_pipe_slippery.feature b/src/test/resources/saboteur_makes_pipe_slippery.feature index 35b3af6..9fd3454 100644 --- a/src/test/resources/saboteur_makes_pipe_slippery.feature +++ b/src/test/resources/saboteur_makes_pipe_slippery.feature @@ -18,7 +18,8 @@ Feature: Saboteur standing on a pipe attempts to make it slippery Then nothing should happen, as the pipe is already slippery Scenario: A Saboteur without enough AP standing on a pipe attempts to make it slippery. - Given that I am standing on a pipe + Given that a pipe is not slippery + And I am standing on the pipe And I am a Saboteur And I don't have enough AP When I attempt to make the pipe slippery diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst index bd4ba34..2c10c85 100644 --- a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst @@ -1,2 +1,3 @@ Tests.class CmdInterpreter.class +StepDefinitions.class diff --git a/target/surefire-reports/2024-05-18T02-05-45_597.dumpstream b/target/surefire-reports/2024-05-18T02-05-45_597.dumpstream new file mode 100644 index 0000000..f94efce --- /dev/null +++ b/target/surefire-reports/2024-05-18T02-05-45_597.dumpstream @@ -0,0 +1,5 @@ +# Created at 2024-05-18T02:05:45.875 +Boot Manifest-JAR contains absolute paths in classpath 'D:\sulie\uniXD\iet\iet-hf-2024-goon-squad\target\test-classes' +Hint: -Djdk.net.URLClassPath.disableClassPathURLCheck=true +'other' has different root + diff --git a/target/surefire-reports/TEST-Tests.xml b/target/surefire-reports/TEST-Tests.xml index e458150..2310ddb 100644 --- a/target/surefire-reports/TEST-Tests.xml +++ b/target/surefire-reports/TEST-Tests.xml @@ -1,5 +1,5 @@ - + @@ -16,7 +16,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -61,20 +61,20 @@ - + - - - + + + - - + + - - - + + + - - + + \ No newline at end of file diff --git a/target/surefire-reports/Tests.txt b/target/surefire-reports/Tests.txt index b4d348a..384a8d7 100644 --- a/target/surefire-reports/Tests.txt +++ b/target/surefire-reports/Tests.txt @@ -1,4 +1,4 @@ ------------------------------------------------------------------------------- Test set: Tests ------------------------------------------------------------------------------- -Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.128 s - in Tests +Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.132 s - in Tests diff --git a/target/test-classes/StepDefinitions.class b/target/test-classes/StepDefinitions.class new file mode 100644 index 0000000000000000000000000000000000000000..f5235f57a551c260a4bdc5e6ad469b504789c4aa GIT binary patch literal 11427 zcmb7K3w&HzS^rMkZKmn8Nv6%S+3n4?-6q+#Y1s$er0(t{n{8)lv$Ydi*k#q5$w}rW zGxyHUy_0PMDxmUEc?c@YOI=XG2M8|Rt>vMxDu|$h3M#0ef(k02f(i=$&$;KGd*3^?cX{Ieg%w^2 z7;Qi0xK3~PUWbF5ee!&dD=_8jPiCRaMt+wn!V1Oj0$ICk;*~SahIpW?*2Rt zh}~V`?isJ%@LcW&Vr?i-`@~vj!2RF?_gghNeSMy85Yq*hJImDtuhrC4IkJRop1n9J zXzF(3Sa3NIirtu}19T8rbNmr(uiGxPxM_5=P-B~?a&!~)Za60ju=Qx3#spA*-CpH0 zo?EelOHNS5Z+>9AfuEzBvANDqbkb2e)XU0zzf9KwHJIjYd1^4w~$ssXU#c?_y+m z&E<)e7W|E|;UF$1?1nQ@^nKn`A&|G_m)ZZH@D~dR&Cwi!l}O!Y$jXx7P4Iz~mZV-rzp3@{N%KZ5NVv2&{WVJUS`BuGQTfVc(n}BpJaO5s;+O;(s z;5!6(rx(CCbE70(T9N94;s(@ir~yIF?Q zxm)2=V-E<^KPykqrUww1p;70XEzW4$=mTT0*KWc0Ax2Y4ds!>6iwnUWtKn@p6~|k# zU1dR~Okg#Hp3taEpnM-J<=cqhZlO?*7z$z@%!&$qb^|64oJPxUS*t1!eaq!_D}dnx z&#L$>f5Y>Ad&C-@g|(UijOjG^SdNxOg0uj?M0lK9?gJKvGd>>|X z9SDveFCfRUJS-+#jPBN|Y7qh{LrutFtvdcjtLZw{=$gH}Zq@B3rmQt6FXq?mu@M+= z##@A1U1uGa&$a3cyg6?#)G$*x>s9R9MZ4*U?`m>eP<7y@p0kNcHw6KG9<&;a1~0VS zz^U_#j_-i5=(=8Dt6Ug7>v$8DRz>oekU2ihm%Jti{a{eFgQBp|8QY)c+&$lND?zKt zQF``mrsM9!X%tLXa9*=(A`Wg42=Gb+7*^Hxtp%XKu^J}t6zj!vyi&DYrvi?ts6}@X zm|Z2yt^+IHy%)q~6s<)RN&fiEHo$yMRgM!Ezh-rDwiT*uXDy; zAd2xyCInXOPH@b~^Vumo@lMs)U!SQtjO(YstB6zz;e>x$3oQi_`pG zp)^{MT`Mjlvlyi#fsrua^-f^~9}v%S)fbKYrL z2?M?;iX_qkzL)-VJu9p$SdxVWYyD18^5>Bk^O~$E$U^HoK59vwTc{fmr3hrXj>O<% zXQ;$!9%#0pl{UpN%xmr6p6rV zu9y7TdLvk8)C>1J(X0i_^KgE^DF%V~ecqe#YBd}K=R@sbX0Qp@goi5Os#c%TK%1SW zanh0WBI<{e9zw_~0I@vOMk%tzpxvLKRT*QDLl;BAIWJH;4kmR(5svf(YMW0s$MK;Q zucXDaNcAQ!`E#BKC~Y>>Yq=n73o;SKhS`vRQUFmS1ZhyNIgJKy!ZTs2s{$^GQJ3_p ztlnjN!3%f`SsYd9c;@=pf#-1CoL6;70~~1cqBxQ2;%TsvzSQ*#5g*GJ`Vwnqw#5R< zVj(+N$&ZQpl`&;kf>QDRqi{+UO(IO}Gd8T?7JVgl$yb>hBi*j{N8GED;)sQufxW}F z2L@42$BblDncEzjnInOmY+)#?Fu)xJK0?j>YGVF#( z37S1p=Hy0DN-u==_lv&JG%SnLO>dP$$itE0LyP;;pn{ajExZ<3}G*F<-5-aCi3 zGVc}L*~=(zaP(Ys1!Htf8PSnjMS9e+S$yJj#?^it<K4=2`s`ciTzC1q(pB>MQ^q38cnk}9G_zI6WKPG;ge?e zf}l}3eaUOC!i%baiT*6I1{wEAw9xHDht~P9_}~PABZ)eJ>MX@gn!zPahgsYDbXcV(edTkQFSMc5uF}8 z%XoCC;1nos6?+pGhhyRrfRpgF=LLSyv>WGmQ1uq^Fz{uZr*H#wm$@t#IA#ZYk{t;% zEl2+fqB0M{2b1%jk0q9)f5+7jv&HlHdg6GFzJ>}DZYewU25uwrRE$NOI&<`&;<6ZB zb*-c_!0QzKM*< zWGA+4c(nj8O-S$Pq$VovB+IcajLP9%Z_>Em;kMu8Rc`|~ys#2WXR=sW?jC_2%|KrL z#J#U+uLQQmia(x+*oh!gCObhEvzo;Uvd886D5m7WZPj zP;Br;9^hO8al|3PhVuE)q9q)}gx>iy(`BGjPA;m zLSNBwXUFj_%gt;rjImjYsDS2s%UfK@|DBv=TBZm&*x*E%6xD3xXO+1IJ z**P}MXhL1^ne@6?K*B!tI5xqtxc=6x`cscJB~88N1u)_*c+lL-9yjmHjZydgYeV_HXklaJ)s!BmHo1-tbe!^>Z~L!zRPW21PBixp4g zT=-yt2u)A8uI+5RlikdYbg-j%*JH;R9gN>eai&MRo(Nx+!nekIaa+XEpV6b{yOP=% zR+=-osMolE@T}*pwi@O;qIwfFUJ2U>=hquNW&4B1{^%vrm{JfkC?91!7vl1rFS&S6 zo2eoHx!=L?_<3lPPHCccuv-vA|Mylr!i9R#2p;IR5aCgg#9K8+5)aSv6Hm(W6VJ!; z6Ys_Nyd8B2uj3fk@NEe%pm?&T(eWpVjlY{Zp8X{4xI&%dh3+d~1__^+2KmU6v~nm)2lMlg-p9Z>9^2Y8|4_e<74pjqFiSPzUB4qc%>Apm~*uF+v4 zAxEsA1~C5Zc~gp#tY*xWQ;5Ri-PD7Hr`}l zb|f%=D8&3>eEf*Ud|3JF7(^}CG@vqQe(x7)B>L(2jy$KFK2530x$MNwp&EYPkKu;+A(~0oQ z;8i-AM86Xucb9?QlR$rYi2e$Eyi%j5nCH%P^UT0J_ZaXQ=J^T0ze>ZORKj-_?#ht* z44&~z25e`#)UO8YPiok26S(KFan8U@2Chnmp91DjYs@rH7PCBg0iG-y95Oul8gO`2 zb4Yk{I@6Pv;K^qh=oy}TEzn=5(G8o-plT$e<2l&)kb#+Dlh*_D4I1+f<-VOFxC^uG z#V5=f8^vzHz}=bfpGwL%0{3S$?j~EKxSh_j^%88oY;ef1_0NLC&uI>E;GM|`yj28V z&4A4ayvG3hCJmcR7cI9@lta5TkS-4!@EPgyX2AcvhBqSw(D!9VNDC3NW}s(8$S(l> z7d85Q%A4pbB0_{u@sp-P*jF|{`CRms=NXJL`pR3t=&hR3oGOaLs_v`G8!|I0epr1& zX3q!p3(zKCXfPX2kELG%vtQQCT*d69(gy|p8DRyBC(gD{WC$YukCo^}aNLX0v0p+@ zrw zl)nk|-_q!r#;>Fs|NWr+0F3{X!6?J{?+2p~Xhw1HEM^4H2N66UGGH@;=PAJcb_#6P z@#-Uh{ph!c{T;ymu7)*2Whvz-@iA=txPh4r6_q|81m=e{W-|ZLcB)Auhn@2i$p23o z@EQ64dw~D2hTjy4z<07D@l%MzPa7OEBJuaZ;Uk)Z8HoU2$&AF$AQC@opl3wlM}hta z8a>54n{Iodc|Hg8eBOZ1FwY+X{*N?#Lip88;lBXkzi6Om2>&sle|!`AuIQeJs4*_# zVd44`wtpF&<0}SwvU8}&`D38}iAGPF2A!jp9ywoyX})H_XPD+s0sjdNe;Qq1T=WO^ z4GtMPe2wZ^(eriONxxxm8BDZ4b&LBXQ2$JGiTYD7z{OP*4BSj7e2ehtXK+Zyr>bRt z4i0~zIW*Nd=oHZ9Mb}j0lA1)|dZF!%U6>4&H9EaK3$bnZuVpzriS@6?_(q{zfy}RH+cp&5T%M`w$7k28U!Ms95`3aQHjT z!Ay35`&n_uEb3*yHQ3f`+LCtgNDtt|E4k++J7AO zzZv#FVpu1`{{IL@U(k$V`2*xY$~lf5hx{iD*bMo Date: Sat, 18 May 2024 04:25:34 +0200 Subject: [PATCH 6/6] documentation (test+personal results) #3 --- docs/BDD_DOCUMENTATION.md | 86 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/docs/BDD_DOCUMENTATION.md b/docs/BDD_DOCUMENTATION.md index 086f71e..c2df595 100644 --- a/docs/BDD_DOCUMENTATION.md +++ b/docs/BDD_DOCUMENTATION.md @@ -308,8 +308,94 @@ Ha a teszt futása sikertelen (pl. elírtam a CmdInterpreter valamelyik parancs **Eredmények** +Az összes tesztet lefuttattam, az esetlegesen felmerülő hibákat kijavítottam. Végeredményül az alábbi resultokat kaptam az egyes tesztek futtatása után: + + mechanic_fixes_pipe.feature + +> Testing started at 4:05 ... +> +> 2 Scenarios (2 passed) +> 12 Steps (12 passed) +> 0m0.263s +> +> Process finished with exit code 0 + + player_passes.feature + +> Testing started at 4:07 ... +> +> 1 Scenarios (1 passed) +> 3 Steps (3 passed) +> 0m0.250s +> +> Process finished with exit code 0 + + player_punctures_pipe.feature + +> Testing started at 4:08 ... +> +> 3 Scenarios (3 passed) +> 15 Steps (15 passed) +> 0m0.313s +> +> Process finished with exit code 0 + + cistern_generates_pump.feature + +> Testing started at 4:03 ... +> +> 2 Scenarios (2 passed) +> 8 Steps (8 passed) +> 0m0.265s +> +> Process finished with exit code 0 + + mechanic_collects_pump.feature + +> Testing started at 4:04 ... +> +> 4 Scenarios (4 passed) +> 27 Steps (27 passed) +> 0m0.282s +> +> Process finished with exit code 0 + + saboteur_makes_pipe_slippery.feature + +> Testing started at 4:10 ... +> +> 3 Scenarios (3 passed) +> 18 Steps (18 passed) +> 0m0.331s +> +> Process finished with exit code 0 + + pump_breaks_down.feature + +> Testing started at 4:09 ... +> +> 2 Scenarios (2 passed) +> 8 Steps (8 passed) +> 0m0.269s +> +> Process finished with exit code 0 + + player_moves_from_pipe.feature + +> Testing started at 4:06 ... +> +> 4 Scenarios (4 passed) +> 21 Steps (21 passed) +> 0m0.286s +> +> Process finished with exit code 0 + **Tanulság** +Én korábban még nem foglalkoztam BDD tesztek írásával, ezért ez az egész folyamat egy új élmény volt számomra. Forgatókönyveket már kellett írnom korábban, így azok kigondolása és átültetése BDD specifikációs formátumba nem okozott különösebb gondot. jUnit teszteket is írtam már, ezért az implementáció sem volt problémás, azonban mindenképpen egy új élmény volt, hogy ezt a két tevékenységet ilyen módon kombinálhattam és végeredményül működő teszteket kaptam. Azt meg kell jegyeznem, hogy a Maven + jUnit setupolása az #1-es Issue-ban nagyban hozzájárult ahhoz, hogy én is gördülékenyen tudtam a munkámat végezni, ehhez jó csapatmunkára volt szükség. + +Összeségében engem megnyert a BDD tesztelés, elképzelhetőnek tartom, hogy a jövőben is alkalmazni fogom más projekteken. + --- > *Készítette: Czímer Bende*