From c4e026a04b31faa96ee524ce2d90a7dbc8b402ba Mon Sep 17 00:00:00 2001 From: Susanne Date: Sun, 16 Feb 2025 15:58:49 +0100 Subject: [PATCH] ANMERKUNG zum weiteren Vorgehen + Test destroyLonelyCell() --- .../GameOfLifeAssignment/Life.class | Bin 2003 -> 2003 bytes out/test/GameOfLifeAssignment/LifeTest.class | Bin 938 -> 1038 bytes src/Life.java | 2 - test/LifeTest.java | 42 ++++++++++++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/out/production/GameOfLifeAssignment/Life.class b/out/production/GameOfLifeAssignment/Life.class index 7557f176ef2b07a6da82dec80a57aea24a46e748..881fc9b229cf66082039d04b9ab8127e833c15b9 100644 GIT binary patch delta 89 zcmcc2f0=*7Emlc024Mzs1_cHS1}z3l1_L153?VI^J*?@(z{KFfz|G*wAj06r opvd6Ppw8gIpv&OJ;LP9+6mezn0m=t41Wdlqwu3Qb@(gxs0QtQUDF6Tf delta 89 zcmcc2f0=*7Emlbz24MzU1_cHO1}z3h1_L15jKKy7-6nr#J*?@)z{KFgz|G*xAj06s opvd6Qpw1A$pvw@%;LH%r;06@;0m2}Lh{^Zab}+_Fp22Pn019h*0?`B%5^&5XP6&`7AwhvaLKJ`~p-hpE3L{aW>;MU67j$V7 zJ`xLH4{U%%Al}$k;sQi5cV_(VyFT-toCnwY_yE%6Tf36f>PD>fYQQ zcdnzZ!}8!Or!JPzVumS{temJXx2EjMe65X81374_qNWTsfoMK4u)?a`6l+q|`27RD zud4lf?e~nUf+ZTJE?2_WsfoKR{ULSfXh_}UZp10gBt_15(rJ2wH=L^x)2E?r5Aj0F zGCHJiR=4dJW-XpsoFL9i0JL!FwJET}9J?}tJ>fr$xf7ybOjJsVihmGoj)}sUP~JNE eTQZQ7%s^Bc+~6|%uC4!5&VNnGhHMLfru74sr721P delta 387 zcmeCff$?3=9m;42BcA?lQA8$Zuw1WMd4FV_*V`GBB_*Faj|fkW>Kj^no-Z zNK|V(1LH;@gNZ>ANP?sp7+4sTfFut@0fRDw3XsRhpbC^_Vo;bI!DPdzIC(0Qay>|u z0s}LU)P}0!0Mcp<>Oj@ZpFnm`>|KzWe4+F(<3Af|xzfJ_BqbnB&%tY?H8jB1E3 e*pPY!e5NQ6G)0fFQ`GPo!UJ+VFeE{NX8-`>;}^#O diff --git a/src/Life.java b/src/Life.java index 74abc63..8e3411c 100644 --- a/src/Life.java +++ b/src/Life.java @@ -51,8 +51,6 @@ public class Life implements ILife { public ILife nextGeneration() { Life next = new Life(); - // Refactoring: erst wurde nur Zelle 1,1 (entsprechend dem Testfall) überprüft, - // jetzt auf alle Zellen des grids ausgeweitet for (int y = 0; y < grid.length; y++) { for (int x = 0; x < grid[y].length; x++) { if (countAliveNeighbours(x, y) == 3) { diff --git a/test/LifeTest.java b/test/LifeTest.java index 1e1124f..56cf88b 100644 --- a/test/LifeTest.java +++ b/test/LifeTest.java @@ -23,6 +23,48 @@ public class LifeTest { @Test public void destroyLonelyCell() { // Zellen, die weniger als zwei Nachbarn haben, müssen sterben (Einsamkeit). + + + + // ----- ANMERKUNG ----- + + // Nach dem Schreiben und Ausführen dieses Tests, habe ich den bisher bestehenden Code so verstanden, + // dass die Zellen ja mit jeder neuen Generation standardmäßig als 'tot' initialisiert werden, + // solange man nicht ausdrücklich zuvor sagte, die Zelle soll leben. + // Sprich lebende Zellen aus der alten Generation werden zunächst nicht in die Folgegeneration vererbt und + // dort dann geschaut, ob diese noch sterben müssen. + // + // Demnach bin ich an diesem Punkt nun etwas verwirrt um die generelle Notwendigkeit einer setDead()-Methode, + // werde sie sowie die übrigen Tests und Funktionen aber dennoch implementieren. Jedoch ist es möglich, + // dass ich nun die TDD-Methodik weniger gezielt anwenden werde. Grund hierfür ist, dass ich es auch als + // sinnfrei empfinde, den Code gezielt entsprechend zu manipulieren, nur damit der Test erzwungenermaßen failed. + // + // Zudem ist nach der Ausarbeitung, also dem Refactoring des Codes (jedenfalls war das meine Intention dabei) + // anhand des ersten Testfalls ja nun bereits sämtliche nötige Logik implementiert. + // + // Also ist mein Ziel nun wie gesagt, dass ich nach bestem Wissen und Gewissen alles weiterhin schrittweise + // implementieren werde, aber es möglich ist, dass mMn redundante Zwischenschritte fehlen könnten. + + + + // Arrange: lebende Zelle (1,1) hat weniger als zwei Nachbarn und sollte sterben. + Life l = new Life(); + l.setAlive(1, 1); + l.setAlive(0, 0); + + // Act: Berechnung der Folgegeneration + ILife nextGen = l.nextGeneration(); + + // Assert: Zelle (1,1) sollte tot sein + assertFalse(nextGen.isAlive(1, 1)); + + + // Was für destroyCell eigentlich, wozu setDead generell??? Die Zelle wird doch sowieso in der nextGen mit + // false initalisiert, solange sie nicht explizit als true (mittels setAlive) initialisiert werden soll. + // Deshalb wird der Test ja sogar jetzt ohne setDead-Implementierung grün. + // + // Ich muss doch nie eine Zelle aktiv mit setDead destroyen, wenn sie in der Folgegeneration sowieso immer + // zu Anfang tot ist, solange ich sie nicht aktiv belebe? }