From ee5469dbe357dfa30cacdb0e1cdf8954b457cf33 Mon Sep 17 00:00:00 2001 From: Susanne Date: Sun, 16 Feb 2025 16:30:31 +0100 Subject: [PATCH] Implementierung Tests keepAliveWithTwoNeighbours() (fails) + keepAliveWithThreeNeighbours() (passes) --- .../GameOfLifeAssignment/Life.class | Bin 2065 -> 2065 bytes out/test/GameOfLifeAssignment/LifeTest.class | Bin 1144 -> 1439 bytes src/Life.java | 4 +-- test/LifeTest.java | 33 +++++++++++++----- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/out/production/GameOfLifeAssignment/Life.class b/out/production/GameOfLifeAssignment/Life.class index aeea557d58dad0679433c17af500b79c87581739..24afbc3ff35222b1bb40cf72007b3eda78374160 100644 GIT binary patch delta 81 zcmbOzFi~KG9GjpegFAy2gD-;_LokCWLnMR!WPP@yn$8SN46Y2^3~me}KzT(54+eDx hPX=8EZw6-uAE2lkkaT4TVhEfp%f5p#bn-QJYXCZn4uJpw delta 81 zcmbOzFi~KG9GjpugFAx_gD-;_LokCWLnMRaWPP@ynyw5?Kyhvc4+aqiPXF9vl6 gZw6hUI%fty1~;I%4^TdcA$YPZ`wqtN$=BGe0Y1$Rp8x;= diff --git a/out/test/GameOfLifeAssignment/LifeTest.class b/out/test/GameOfLifeAssignment/LifeTest.class index 8f6b3ab44e7e98613ac4ee835f7030102b232314..2748436d558b8dc4a09c0f9aad5e668f81afc76d 100644 GIT binary patch delta 312 zcmY+7O)G?96o#+od8aYPq=dyx%EyGv7w?SmF$~GVXB1P|sy8!Hqrq5M$lCJx0e*ul z6lG&)>tFZbm}>sb3fO0J|lM>(YLRs7hsvoBpxa;AZ^7=vi@9qXKNu1X(|Tv*n3ba>#~cHc8D@bA7S++*I_xvT zsCtAkRSKglMw*OnWVH`#lT$b3-K)1hxT2q{@~+9dF7Jjsn{sT6*nn9bv4k+S0Ihoaz-3X|IiNP2EvrrgW diff --git a/src/Life.java b/src/Life.java index 8459c37..00df3fd 100644 --- a/src/Life.java +++ b/src/Life.java @@ -54,9 +54,7 @@ public class Life implements ILife { for (int x = 0; x < grid[y].length; x++) { if (countAliveNeighbours(x, y) == 3) { next.setAlive(x, y); - } - // Refactoring: vermeide zwei fast identische Codeblöcke, also Dopplung, mittels zusammenziehen der if's - else if (countAliveNeighbours(x, y) < 2 || countAliveNeighbours(x, y) > 3) { + } else if (countAliveNeighbours(x, y) < 2 || countAliveNeighbours(x, y) > 3) { next.setDead(x, y); } } diff --git a/test/LifeTest.java b/test/LifeTest.java index 7393eef..e81bb79 100644 --- a/test/LifeTest.java +++ b/test/LifeTest.java @@ -37,9 +37,32 @@ public class LifeTest { } + // Testfall "keepAliveCell()" aufgeteilt in zwei einzelne Tests, da es ja eigentlich üblich ist, dass je Test + // nur ein einzelnes Szenario überprüft wird @Test - public void keepAliveCell() { - // Zellen mit zwei oder drei Nachbarn bleiben am Leben. + public void keepAliveWithTwoNeighbours() { + // failed, weil bislang nur Zellen mit genau 3 Nachbarn in nextGen auf alive gesetzt werden, + // andernfalls standardmäßig mit false, also tot, initialisiert + Life l = new Life(); + l.setAlive(1, 1); + l.setAlive(0, 0); + l.setAlive(0, 1); + + ILife nextGen = l.nextGeneration(); + assertTrue(nextGen.isAlive(1, 1)); + } + + @Test + public void keepAliveWithThreeNeighbours() { + // passed, weil Zellen mit genau 3 Nachbarn bereits in nextGen auf alive gesetzt werden + Life l = new Life(); + l.setAlive(1, 1); + l.setAlive(0, 0); + l.setAlive(0, 1); + l.setAlive(0, 2); + + ILife nextGen = l.nextGeneration(); + assertTrue(nextGen.isAlive(1, 1)); } @@ -60,11 +83,5 @@ public class LifeTest { // Assert: Zelle (1,1) sollte tot sein assertFalse(nextGen.isAlive(1, 1)); - - // Test passed wieder sofort, obwohl ich noch keine weitere Überprüfung eingebaut habe, aus zuvor beschriebenem - // Grund, dass Zellen in der nextGen grundsätzlich mit false initialisiert werden, solange man sie nicht - // explizit mit setAlive() auf true setzt. } - - }