diff --git a/out/production/GameOfLifeAssignment/Life.class b/out/production/GameOfLifeAssignment/Life.class index aeea557..24afbc3 100644 Binary files a/out/production/GameOfLifeAssignment/Life.class and b/out/production/GameOfLifeAssignment/Life.class differ diff --git a/out/test/GameOfLifeAssignment/LifeTest.class b/out/test/GameOfLifeAssignment/LifeTest.class index 8f6b3ab..2748436 100644 Binary files a/out/test/GameOfLifeAssignment/LifeTest.class and b/out/test/GameOfLifeAssignment/LifeTest.class differ 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. } - - }