Browse Source

LifeTest final step passed

Finished Version
master
Moritz Neumeier 2 years ago
parent
commit
4e3d87a043

BIN
out/production/GameOfLifeAssignment/Life.class View File


BIN
out/test/GameOfLifeAssignment/LifeTest.class View File


+ 6
- 10
src/Life.java View File

l = (Life) l.nextGeneration(); l = (Life) l.nextGeneration();
} }



public Life() { public Life() {
nukeAll(); nukeAll();
} }
setAlive(x, y); setAlive(x, y);
} }
} }
//System.out.println(board[y]);
} }
printTable(board); printTable(board);
} }
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
setDead(x, y); setDead(x, y);
} }
} }

} }


@Override @Override


@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[]{ " ",
" ", " ",
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
else if(isAlive(x,y) && alive < 2){
//Cell is lonely and dies or cell is overpopulated and dies
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);
} }
} }
} }
return neighbours; return neighbours;
} }
}

}

+ 15
- 8
test/LifeTest.java View File

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);
// 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);
// 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));
}


} }

Loading…
Cancel
Save