Implementierung Tests keepAliveWithTwoNeighbours() (fails) + keepAliveWithThreeNeighbours() (passes)
This commit is contained in:
parent
2763a28619
commit
ee5469dbe3
Binary file not shown.
Binary file not shown.
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user