LifeTest final step passed

Finished Version
This commit is contained in:
Moritz Neumeier 2021-12-17 14:11:24 +01:00
parent c620449f0f
commit 4e3d87a043
4 changed files with 21 additions and 18 deletions

View File

@ -13,7 +13,6 @@ public class Life implements ILife {
l = (Life) l.nextGeneration(); l = (Life) l.nextGeneration();
} }
public Life() { public Life() {
nukeAll(); nukeAll();
} }
@ -26,7 +25,6 @@ public class Life implements ILife {
setAlive(x, y); setAlive(x, y);
} }
} }
//System.out.println(board[y]);
} }
printTable(board); printTable(board);
} }
@ -36,7 +34,6 @@ public class Life implements ILife {
System.out.println("________"); System.out.println("________");
} }
@Override @Override
public void nukeAll() { //works public void nukeAll() { //works
// TODO Auto-generated method stub // TODO Auto-generated method stub
@ -45,7 +42,6 @@ public class Life implements ILife {
setDead(x, y); setDead(x, y);
} }
} }
} }
@Override @Override
@ -72,7 +68,7 @@ public class Life implements ILife {
@Override @Override
public ILife nextGeneration() { public ILife nextGeneration() {
//Problem mehrere steps auf einmal da gesetzer * bei nachfolgendem durchlauf mitberücksichtigt wird
int alive; int alive;
String[] nextBoard = new String[]{ " ", String[] nextBoard = new String[]{ " ",
" ", " ",
@ -88,11 +84,12 @@ public class Life implements ILife {
if(!isAlive(x,y) && alive == 3) { if(!isAlive(x,y) && alive == 3) {
nextBoard[y] = nextBoard[y].substring(0, x) + '*' + nextBoard[y].substring(x+1); nextBoard[y] = nextBoard[y].substring(0, x) + '*' + nextBoard[y].substring(x+1);
} }
//Cell is lonely and dies //Cell is lonely and dies or cell is overpopulated and dies
else if(isAlive(x,y) && alive < 2){ else if((isAlive(x,y) && (alive < 2)) || (alive > 3)){
nextBoard[y] = nextBoard[y].substring(0, x) + ' ' + nextBoard[y].substring(x+1); nextBoard[y] = nextBoard[y].substring(0, x) + ' ' + nextBoard[y].substring(x+1);
} }
else if(isAlive(x,y) && (alive==2 || alive ==3)){ //Cell with two or three living neighbours lives on
else if(isAlive(x,y) && (alive == 2 || alive == 3)){
nextBoard[y] = nextBoard[y].substring(0, x) + board[y].charAt(x) + nextBoard[y].substring(x+1); nextBoard[y] = nextBoard[y].substring(0, x) + board[y].charAt(x) + nextBoard[y].substring(x+1);
} }
} }
@ -150,5 +147,4 @@ public class Life implements ILife {
} }
return neighbours; return neighbours;
} }
} }

View File

@ -20,10 +20,8 @@ public class LifeTest {
assertTrue(l.isAlive(1, 1)); assertTrue(l.isAlive(1, 1));
} }
@Test @Test
public void destroyLonelyCell() { public void destroyLonelyCell() {
//Lebende Zellen mit weniger als zwei lebenden Nachbarn sterben in der Folgegeneration an Einsamkeit.
// Arrange: drei lebende Zellen // Arrange: drei lebende Zellen
Life l = new Life(); Life l = new Life();
l.setAlive(0, 0); l.setAlive(0, 0);
@ -33,14 +31,12 @@ public class LifeTest {
// Act: Berechnung der Folgegeneration // Act: Berechnung der Folgegeneration
l.nextGeneration(); l.nextGeneration();
// Assert: Rasterpunkt mit weniger als zwei Nachbarn sollte sterben // Assert: Lebende Zellen mit weniger als zwei lebenden Nachbarn sterben in der Folgegeneration an Einsamkeit
assertFalse(l.isAlive(0, 0)); assertFalse(l.isAlive(0, 0));
} }
@Test @Test
public void keepAliveCell() { public void keepAliveCell() {
//Eine lebende Zelle mit zwei oder drei lebenden Nachbarn bleibt in der Folgegeneration am Leben.
// Arrange: drei lebende Zellen // Arrange: drei lebende Zellen
Life l = new Life(); Life l = new Life();
l.setAlive(0, 0); l.setAlive(0, 0);
@ -50,14 +46,25 @@ public class LifeTest {
// Act: Berechnung der Folgegeneration // Act: Berechnung der Folgegeneration
l.nextGeneration(); l.nextGeneration();
// Assert: Rasterpunkt mit zwei oder 3 lebenden Nachbarn bleibt am Leben // Assert: Eine lebende Zelle mit zwei oder drei lebenden Nachbarn bleibt in der Folgegeneration am Leben.
assertTrue(l.isAlive(0, 1)); assertTrue(l.isAlive(0, 1));
} }
@Test @Test
public void destroyCrowdedCell() { public void destroyCrowdedCell() {
// Arrange: vier lebende Zellen
Life l = new Life();
l.setAlive(0, 0);
l.setAlive(0, 1);
l.setAlive(0, 2);
l.setAlive(1, 1);
l.setAlive(1, 0);
// Act: Berechnung der Folgegeneration
l.nextGeneration();
// Assert: Lebende Zellen mit mehr als drei lebenden Nachbarn sterben in der Folgegeneration an Überbevölkerung
assertFalse(l.isAlive(0, 1));
} }
} }