Assert.assertTrue(spaceShip.getLives() == 2);
spaceShip.decreaseLives();
//Testing collisions AlienShot -> Ship and Shot -> Alien
model.getList().add(new AlienShot(spaceShip.getPositionX(), spaceShip.getPositionY()));
ShipShot shot = new ShipShot(10, 50);
model.getList().add(shot);
shot.collideWith(model.getList());
spaceShip.collideWith(model.getList());
Assert.assertTrue(spaceShip.isDead());
Assert.assertTrue(shot.isDead());
int individualsKilled = 0;
for (Individual ind : model.getList()) {
if (ind.isDead()) {
individualsKilled++;
}
}
Assert.assertTrue(individualsKilled == 4); //Individuals dead: alienShot, shot, ship and an alien
for (Individual ind : model.getList()) {
if (ind.getPositionX() == 10 && ind.getPositionY() == 50) {
Assert.assertTrue(ind.isDead());
}
}
//Testing collisions Shot -> Wall and Alien shot -> Wall
ShipShot shipShot = new ShipShot(40, 450);
Wall wallKicked = null;
model.getList().add(shipShot);
for (Wall wall : model.getWalls().getList()) {
wall.collideWith(model.getList());
}
for (Wall wall : model.getWalls().getList()) {
if (wall.getPositionX() == 40 && wall.getPositionY() == 450) {
wallKicked = wall;
}
}
Assert.assertTrue(wallKicked.getLives() == 1);
model.getList().remove(shipShot);
AlienShot alienShot = new AlienShot(35, 450);
model.getList().add(alienShot);
wallKicked.collideWith(model.getList());
Assert.assertTrue(wallKicked.getLives() == 0);
Assert.assertTrue(wallKicked.isDead());
//Testing collisions Shot -> Alien Shot
model.getList().add(shipShot);
alienShot.collideWith(model.getList());
Assert.assertTrue(shipShot.isDead());
Assert.assertTrue(alienShot.isDead());
//Testing score when aliens die
model.resetStatistics();
Alien alien1 = new Alien(new AlienType(1), 50, 30);