Skip to content

Instantly share code, notes, and snippets.

@tiagox
Created November 1, 2017 15:33
Show Gist options
  • Save tiagox/c396686919b612044d2ee5d6a6910379 to your computer and use it in GitHub Desktop.
Save tiagox/c396686919b612044d2ee5d6a6910379 to your computer and use it in GitHub Desktop.
public class Avion {
private int filas;
private int columnas;
private boolean[][] asientos;
public Avion(int filas, int columnas) {
this.filas = filas;
this.columnas = columnas;
asientos = new boolean[filas][columnas];
}
public void reservarAsiento(int fila, int columna) {
if (fila > 0 && fila <= filas && columna > 0 && columna <= columnas) {
if (asientos[fila - 1][columna - 1] == false) {
asientos[fila - 1][columna - 1] = true;
} else {
throw new Error("Asiento reservado.");
}
} else {
throw new Error("No existe asiento.");
}
}
public boolean consultarDisponibilidadAsiento(int fila, int columna) {
if (fila > 0 && fila <= filas && columna > 0 && columna <= columnas) {
return asientos[fila - 1][columna - 1];
} else {
throw new Error("No existe asiento.");
}
}
public boolean estaCompleto() {
for (int i = 0; i < asientos.length; i++) {
for (int j = 0; j < asientos[i].length; j++) {
if (asientos[i][j] == false) {
return false;
}
}
}
return true;
}
}
import org.junit.Assert;
import org.junit.Test;
public class AvionTests {
@Test
public void testHacerUnaReserva() {
Avion avion = new Avion(40, 5);
avion.reservarAsiento(3, 1);
Assert.assertEquals(true, avion.consultarDisponibilidadAsiento(3, 1));
}
@Test
public void testHacerVariasReservasValidas() {
Avion avion = new Avion(40, 5);
avion.reservarAsiento(1, 1);
Assert.assertTrue(avion.consultarDisponibilidadAsiento(1, 1));
avion.reservarAsiento(40, 5);
Assert.assertTrue(avion.consultarDisponibilidadAsiento(40, 5));
avion.reservarAsiento(40, 1);
Assert.assertTrue(avion.consultarDisponibilidadAsiento(40, 1));
avion.reservarAsiento(1, 5);
Assert.assertTrue(avion.consultarDisponibilidadAsiento(1, 5));
}
@Test(expected = Error.class)
public void testHacerUnaReservaSobreAsientoReservado() {
Avion avion = new Avion(40, 5);
avion.reservarAsiento(3, 1);
avion.reservarAsiento(3, 1);
}
@Test(expected = Error.class)
public void testHacerUnaReservaFueraDeRango() {
Avion avion = new Avion(40, 5);
avion.reservarAsiento(3, 6);
}
@Test
public void testVerSiEstaCompleto() {
Avion avion = new Avion(40, 5);
for (int fila = 1; fila <= 40; fila++) {
for (int columna = 1; columna <= 5; columna++) {
avion.reservarAsiento(fila, columna);
}
}
Assert.assertTrue(avion.estaCompleto());
}
@Test
public void testVerSiNoEstaCompleto() {
Avion avion = new Avion(40, 5);
Assert.assertFalse(avion.estaCompleto());
}
@Test
public void testVerSiNoEstaCompletoPeroSoloPorUnAsiento() {
Avion avion = new Avion(40, 5);
for (int fila = 1; fila <= 40; fila++) {
for (int columna = 1; columna <= 5; columna++) {
if (fila != 38 && columna != 3) {
avion.reservarAsiento(fila, columna);
}
}
}
Assert.assertFalse(avion.estaCompleto());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment