2025-02-09 23:01:20 +01:00
|
|
|
import org.junit.Test;
|
|
|
|
import static org.junit.Assert.*;
|
|
|
|
|
|
|
|
public class LifeTest {
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void createNewCell() {
|
|
|
|
|
|
|
|
// Arrange: drei lebende Zellen
|
|
|
|
Life l = new Life();
|
|
|
|
l.setAlive(0, 0);
|
|
|
|
l.setAlive(0, 1);
|
|
|
|
l.setAlive(0, 2);
|
|
|
|
|
|
|
|
// Act: Berechnung der Folgegeneration
|
|
|
|
ILife nextGen = l.nextGeneration();
|
|
|
|
|
|
|
|
// Assert: Rasterpunkt mit drei Nachbarn sollte jetzt leben
|
|
|
|
assertTrue(nextGen.isAlive(1, 1));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void destroyLonelyCell() {
|
2025-02-15 19:31:31 +01:00
|
|
|
// Zellen, die weniger als zwei Nachbarn haben, müssen sterben (Einsamkeit).
|
2025-02-16 15:58:49 +01:00
|
|
|
|
|
|
|
// 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));
|
2025-02-09 23:01:20 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
2025-02-16 16:30:31 +01:00
|
|
|
public void keepAliveWithTwoNeighbours() {
|
|
|
|
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() {
|
|
|
|
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));
|
2025-02-09 23:01:20 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void destroyCrowdedCell() {
|
2025-02-15 19:31:31 +01:00
|
|
|
// Zellen mit mehr als drei Nachbarn sterben (Überbevölkerung).
|
2025-02-16 16:08:03 +01:00
|
|
|
|
|
|
|
// Arrange: lebende Zelle (1,1) hat mehr als drei Nachbarn und sollte sterben.
|
|
|
|
Life l = new Life();
|
|
|
|
l.setAlive(1, 1);
|
|
|
|
l.setAlive(0, 0);
|
|
|
|
l.setAlive(0, 1);
|
|
|
|
l.setAlive(0, 2);
|
|
|
|
l.setAlive(1, 0);
|
|
|
|
|
|
|
|
// Act: Berechnung der Folgegeneration
|
|
|
|
ILife nextGen = l.nextGeneration();
|
|
|
|
|
|
|
|
// Assert: Zelle (1,1) sollte tot sein
|
|
|
|
assertFalse(nextGen.isAlive(1, 1));
|
2025-02-09 23:01:20 +01:00
|
|
|
}
|
|
|
|
}
|