Skip to content

Commit 322a41e

Browse files
committed
Se agregan tests sobre los comandos, cubriendo totalmente esos casos
1 parent 1316d95 commit 322a41e

18 files changed

Lines changed: 483 additions & 14 deletions

src/main/java/jwarrior/piezas/unidades/Unidad.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void recibirGolpe(final Integer fuerza) {
8484
}
8585
}
8686

87-
public final void curar(final Integer cantidadARestaurar) {
87+
public void curar(final Integer cantidadARestaurar) {
8888
this.saludActual = Math.min(
8989
this.saludActual + cantidadARestaurar,
9090
this.saludMaxima);
@@ -109,7 +109,7 @@ public boolean estaSaludable() {
109109
return this.saludActual == this.saludMaxima;
110110
}
111111

112-
public final boolean estaVivo() {
112+
public boolean estaVivo() {
113113
return this.saludActual > 0;
114114
}
115115

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package jwarrior.comandos;
2+
3+
import static org.hamcrest.CoreMatchers.is;
4+
import static org.junit.Assert.assertThat;
5+
import jwarrior.piezas.unidades.Unidad;
6+
import jwarrior.piezas.unidades.mocks.UnidadEspia;
7+
import jwarrior.piezas.unidades.mocks.UnidadStubBuilder;
8+
9+
import org.junit.Test;
10+
11+
public class AtacarTests {
12+
13+
@Test
14+
public void queUnidadAtacadaRecibeGolpe() {
15+
16+
Unidad atacante = UnidadStubBuilder.construirStubGuerrero();
17+
UnidadEspia atacada = UnidadStubBuilder.construirStubEspia();
18+
Atacar comando = ConstructorDeEscenarios.escenarioParaAtacar(atacante, atacada);
19+
comando.ejecutarComando();
20+
assertThat(atacada.invocoRecibirGolpe(), is(true));
21+
}
22+
23+
// TODO: falta testear, pero es responsabilidad de otra clase, cuánto se lastima.
24+
}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
package jwarrior.comandos;
2+
3+
import jwarrior.piezas.PosicionEspia;
4+
import jwarrior.piezas.Salida;
5+
import jwarrior.piezas.unidades.Unidad;
6+
import jwarrior.piezas.unidades.mocks.UnidadEspia;
7+
import jwarrior.piezas.unidades.mocks.UnidadStubBuilder;
8+
import jwarrior.posiciones.Posicion;
9+
import jwarrior.posiciones.PosicionInexistente;
10+
import jwarrior.referencias.Direccion;
11+
import jwarrior.referencias.Espacio;
12+
13+
public class ConstructorDeEscenarios {
14+
15+
public static NoHacerNada escenarioParaNoHacerNada(Unidad unidad) {
16+
return new NoHacerNada(unidad);
17+
}
18+
19+
public static Descansar escenarioParaDescansar(Unidad unidad) {
20+
return new Descansar(unidad);
21+
}
22+
23+
public static Atacar escenarioParaAtacar(Unidad atacante,
24+
UnidadEspia atacada) {
25+
26+
Posicion posicionAtacada = new Posicion();
27+
posicionAtacada.establecerPieza(atacada);
28+
29+
atacante.establecerPosicion(posicionJuntoAPosicion(posicionAtacada));
30+
return new Atacar(Direccion.ADELANTE, atacante);
31+
}
32+
33+
private static Posicion posicionJuntoAPosicion(Posicion posicionAtacada) {
34+
return new PosicionJuntoAOtra(posicionAtacada);
35+
}
36+
37+
public static EscenarioParaDesplazarse escenarioParaDesplazarsePorVacia() {
38+
39+
Posicion posicionDestino = new Posicion();
40+
PosicionEspia posicionActual = posicionEspiaJuntoAPosicion(posicionDestino);
41+
Unidad unidad = UnidadStubBuilder.construirStubGuerrero();
42+
unidad.establecerPosicion(posicionActual);
43+
44+
return new EscenarioParaDesplazarse(unidad, posicionActual);
45+
}
46+
47+
public static EscenarioParaDesplazarse escenarioParaDesplazarsePorSalida() {
48+
49+
Posicion posicionDestino = new Salida();
50+
PosicionEspia posicionActual = posicionEspiaJuntoAPosicion(posicionDestino);
51+
Unidad unidad = UnidadStubBuilder.construirStubGuerrero();
52+
unidad.establecerPosicion(posicionActual);
53+
54+
return new EscenarioParaDesplazarse(unidad, posicionActual);
55+
}
56+
57+
public static EscenarioParaDesplazarse escenarioParaNoDesplazarsePorInexistente() {
58+
59+
Posicion posicionDestino = new PosicionInexistente();
60+
PosicionEspia posicionActual = posicionEspiaJuntoAPosicion(posicionDestino);
61+
Unidad unidad = UnidadStubBuilder.construirStubGuerrero();
62+
unidad.establecerPosicion(posicionActual);
63+
64+
return new EscenarioParaDesplazarse(unidad, posicionActual);
65+
}
66+
67+
public static EscenarioParaDesplazarse escenarioParaNoDesplazarsePorOcupada() {
68+
69+
Posicion posicionDestino = new PosicionOcupada();
70+
PosicionEspia posicionActual = posicionEspiaJuntoAPosicion(posicionDestino);
71+
Unidad unidad = UnidadStubBuilder.construirStubGuerrero();
72+
unidad.establecerPosicion(posicionActual);
73+
74+
return new EscenarioParaDesplazarse(unidad, posicionActual);
75+
}
76+
77+
private static PosicionEspia posicionEspiaJuntoAPosicion(Posicion posicionAtacada) {
78+
return new PosicionEspiaJuntoAOtra(posicionAtacada);
79+
}
80+
}
81+
82+
class PosicionOcupada extends Posicion {
83+
@Override
84+
public boolean hay(Espacio espacio) {
85+
return Espacio.ENEMIGO == espacio;
86+
}
87+
}
88+
89+
class PosicionJuntoAOtra extends Posicion {
90+
91+
private Posicion contigua;
92+
93+
public PosicionJuntoAOtra(Posicion otraPosicion) {
94+
this.contigua = otraPosicion;
95+
}
96+
97+
@Override
98+
public Posicion obtenerContigua(Direccion direccion) {
99+
return this.contigua;
100+
}
101+
}
102+
103+
class PosicionEspiaJuntoAOtra extends PosicionEspia {
104+
105+
private Posicion contigua;
106+
107+
public PosicionEspiaJuntoAOtra(Posicion otraPosicion) {
108+
this.contigua = otraPosicion;
109+
}
110+
111+
@Override
112+
public Posicion obtenerContigua(Direccion direccion) {
113+
return this.contigua;
114+
}
115+
116+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package jwarrior.comandos;
2+
3+
import static org.hamcrest.CoreMatchers.is;
4+
import static org.junit.Assert.assertThat;
5+
import jwarrior.piezas.unidades.mocks.UnidadHeridaEspia;
6+
import jwarrior.piezas.unidades.mocks.UnidadSaludable;
7+
import jwarrior.piezas.unidades.mocks.UnidadStubBuilder;
8+
9+
import org.junit.Test;
10+
11+
public class DescansarTests {
12+
13+
@Test
14+
public void queUnidadSaludableNoSeCura() {
15+
16+
UnidadSaludable unidadEspia = UnidadStubBuilder.construirStubSaludable(20);
17+
Descansar comando = ConstructorDeEscenarios.escenarioParaDescansar(unidadEspia);
18+
comando.ejecutarComando();
19+
assertThat(unidadEspia.invocoCurar(), is(false));
20+
}
21+
22+
@Test
23+
public void queUnidadNoSaludableSeCura() {
24+
25+
UnidadHeridaEspia unidadEspia = UnidadStubBuilder.construirStubHeridoEspia(20);
26+
Descansar comando = ConstructorDeEscenarios.escenarioParaDescansar(unidadEspia);
27+
comando.ejecutarComando();
28+
assertThat(unidadEspia.invocoCurar(), is(true));
29+
}
30+
31+
// TODO: falta testear, pero es responsabilidad de otra clase, cuánto se cura.
32+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package jwarrior.comandos;
2+
3+
import static org.hamcrest.CoreMatchers.is;
4+
import static org.junit.Assert.assertThat;
5+
6+
import org.junit.Test;
7+
8+
public class DesplazarseTests {
9+
10+
@Test
11+
public void queUnidadSiHayContiguaSeMueve() {
12+
13+
EscenarioParaDesplazarse escenario = ConstructorDeEscenarios.escenarioParaDesplazarsePorVacia();
14+
Desplazarse comando = escenario.obtenerComando();
15+
16+
comando.ejecutarComando();
17+
assertThat(escenario.obtenerPosicionOrigen().invocoMoverUnidadHacia(), is(true));
18+
}
19+
20+
@Test
21+
public void queUnidadSiHaySalidaSeMueve() {
22+
23+
EscenarioParaDesplazarse escenario = ConstructorDeEscenarios.escenarioParaDesplazarsePorSalida();
24+
Desplazarse comando = escenario.obtenerComando();
25+
26+
comando.ejecutarComando();
27+
assertThat(escenario.obtenerPosicionOrigen().invocoMoverUnidadHacia(), is(true));
28+
}
29+
30+
@Test
31+
public void queUnidadSiNoHayContiguaNoSeMueve() {
32+
33+
EscenarioParaDesplazarse escenario = ConstructorDeEscenarios.escenarioParaNoDesplazarsePorInexistente();
34+
Desplazarse comando = escenario.obtenerComando();
35+
36+
comando.ejecutarComando();
37+
assertThat(escenario.obtenerPosicionOrigen().invocoMoverUnidadHacia(), is(false));
38+
}
39+
40+
@Test
41+
public void queUnidadSiHayContiguaOcupadaNoSeMueve() {
42+
43+
EscenarioParaDesplazarse escenario = ConstructorDeEscenarios.escenarioParaNoDesplazarsePorOcupada();
44+
Desplazarse comando = escenario.obtenerComando();
45+
46+
comando.ejecutarComando();
47+
assertThat(escenario.obtenerPosicionOrigen().invocoMoverUnidadHacia(), is(false));
48+
}
49+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package jwarrior.comandos;
2+
3+
import jwarrior.piezas.PosicionEspia;
4+
import jwarrior.piezas.unidades.Unidad;
5+
import jwarrior.referencias.Direccion;
6+
7+
public class EscenarioParaDesplazarse {
8+
9+
private PosicionEspia posicionActual;
10+
private Unidad unidad;
11+
12+
public EscenarioParaDesplazarse(Unidad unidad,
13+
PosicionEspia posicionActual) {
14+
this.unidad = unidad;
15+
this.posicionActual = posicionActual;
16+
}
17+
18+
public PosicionEspia obtenerPosicionOrigen() {
19+
return this.posicionActual;
20+
}
21+
22+
public Desplazarse obtenerComando() {
23+
return new Desplazarse(Direccion.ADELANTE, this.unidad);
24+
}
25+
26+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package jwarrior.comandos;
2+
3+
import static org.hamcrest.CoreMatchers.is;
4+
import static org.junit.Assert.assertThat;
5+
import jwarrior.piezas.unidades.mocks.UnidadEspia;
6+
import jwarrior.piezas.unidades.mocks.UnidadMuerta;
7+
import jwarrior.piezas.unidades.mocks.UnidadStubBuilder;
8+
9+
import org.junit.Test;
10+
11+
public class NoHacerNadaTests {
12+
13+
@Test
14+
public void queNoHaceNada() {
15+
16+
UnidadEspia unidadEspia = UnidadStubBuilder.construirStubEspia();
17+
NoHacerNada comando = ConstructorDeEscenarios.escenarioParaNoHacerNada(unidadEspia);
18+
comando.ejecutarComando();
19+
assertThat(unidadEspia.invocoDecir(), is(true));
20+
}
21+
22+
@Test
23+
public void queSiEstaMuertaNoEjecuta() {
24+
25+
UnidadMuerta unidadMuerta = UnidadStubBuilder.construirStubMuerto();
26+
NoHacerNada comando = ConstructorDeEscenarios.escenarioParaNoHacerNada(unidadMuerta);
27+
comando.ejecutarComando();
28+
assertThat(unidadMuerta.invocoDecir(), is(false));
29+
}
30+
31+
}

src/test/java/jwarrior/juego/puntuacion/ControlDePuntajeTests.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,18 @@ public class ControlDePuntajeTests {
1919

2020
@Test
2121
public void informaPuntuacionInicial() {
22-
22+
2323
ControlDePuntaje controlDePuntaje = new ControlDePuntaje();
2424
assertThat(controlDePuntaje.obtenerPuntaje(), is(10));
2525
}
26-
26+
2727
@Test
2828
public void alInformarPasoDeTurnoNotificaConPuntajeNegativo() {
2929

3030
ControlDePuntaje controlDePuntaje = new ControlDePuntaje();
3131
PuntajeEspia puntajeEspia = new PuntajeEspia();
3232
controlDePuntaje.establecerPuntaje(puntajeEspia);
33-
33+
3434
controlDePuntaje.notificarTurno(new JuegoStub());
3535
assertThat(puntajeEspia.invocoComputarConNegativo(), is(true));
3636
}
@@ -41,7 +41,7 @@ public void alInformarMuerteEnemigoComputa() {
4141
ControlDePuntaje controlDePuntaje = new ControlDePuntaje();
4242
PuntajeEspia puntajeEspia = new PuntajeEspia();
4343
controlDePuntaje.establecerPuntaje(puntajeEspia);
44-
44+
4545
controlDePuntaje.notificarMuerte(UnidadStubBuilder.construirStub());
4646
assertThat(puntajeEspia.invocoComputar(), is(true));
4747
}
@@ -52,7 +52,7 @@ public void alInformarMuerteGuerreroNoComputa() {
5252
ControlDePuntaje controlDePuntaje = new ControlDePuntaje();
5353
PuntajeEspia puntajeEspia = new PuntajeEspia();
5454
controlDePuntaje.establecerPuntaje(puntajeEspia);
55-
55+
5656
controlDePuntaje.notificarMuerte(UnidadStubBuilder.construirStubGuerrero());
5757
assertThat(puntajeEspia.invocoComputar(), is(false));
5858
}
@@ -63,7 +63,7 @@ public void alInformarFinalizacionPartidaComputa() {
6363
ControlDePuntaje controlDePuntaje = new ControlDePuntaje();
6464
PuntajeEspia puntajeEspia = new PuntajeEspia();
6565
controlDePuntaje.establecerPuntaje(puntajeEspia);
66-
66+
6767
controlDePuntaje.notificarFinal(new JuegoStub());
6868
assertThat(puntajeEspia.invocoComputar(), is(true));
6969
}
@@ -74,7 +74,7 @@ class JuegoStub extends Juego {
7474
public JuegoStub() {
7575
super(new NivelDummy());
7676
}
77-
77+
7878
@Override
7979
public Unidad obtenerGuerrero() {
8080
return UnidadStubBuilder.construirStubGuerrero();
@@ -103,11 +103,11 @@ public void computar(Integer puntos) {
103103
this.computoConNegativo = true;
104104
}
105105
}
106-
106+
107107
public Boolean invocoComputarConNegativo() {
108108
return this.computoConNegativo;
109109
}
110-
110+
111111
public Boolean invocoComputar() {
112112
return this.computo;
113113
}

src/test/java/jwarrior/piezas/PosicionEspia.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
public class PosicionEspia extends Posicion {
66

77
private boolean seLibero = false;
8+
private boolean invocoMoverUnidadHacia = false;
89

910
@Override
1011
public void liberar() {
@@ -15,4 +16,13 @@ public boolean verificarQueSeLibero() {
1516
return this.seLibero;
1617
}
1718

19+
@Override
20+
public void moverUnidadHacia(Posicion posicionDestino) {
21+
this.invocoMoverUnidadHacia = true;
22+
}
23+
24+
public boolean invocoMoverUnidadHacia() {
25+
return this.invocoMoverUnidadHacia ;
26+
}
27+
1828
}

0 commit comments

Comments
 (0)