GameOfLifeAssigment/test/LifeTest.java

71 lines
1.9 KiB
Java
Raw Normal View History

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() {
// Zellen, die weniger als zwei Nachbarn haben, müssen sterben (Einsamkeit).
// 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
public void keepAliveCell() {
// Zellen mit zwei oder drei Nachbarn bleiben am Leben.
2025-02-09 23:01:20 +01:00
}
@Test
public void destroyCrowdedCell() {
// 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));
// 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.
2025-02-09 23:01:20 +01:00
}
}