Package test.modelo

Source Code of test.modelo.PartidaTest

package test.modelo;

import junit.framework.Assert;
import modelo.Partida;
import modelo.Turno;
import modelo.excepciones.LadronNoPlaneoEscapeException;
import modelo.ladron.*;
import modelo.ladron.perfil.*;
import modelo.mapa.*;
import modelo.policia.OrdenDeArresto;
import modelo.policia.Policia;

import org.junit.Before;
import org.junit.Test;

public class PartidaTest {

  private Partida partida;
  private Policia policia;
  private Turno turno;
  private Ladron ladron;
  private String MENSAJE_NO_ESTA_LADRON = "Lo siento, nunca he visto a esa persona.";
  private int HORAS_TOTAL_JUEGO = 154;

  @Before
  public void setUp() {

    // Coordenadas
    Coordenada ubicacion0 = new Coordenada(0, 0);
    Coordenada ubicacion1 = new Coordenada(5, 5);
    Coordenada ubicacion2 = new Coordenada(10, 10);
    Coordenada ubicacion3 = new Coordenada(15, 15);
    Coordenada ubicacion4 = new Coordenada(20, 20);

    // Ciudades
    Ciudad ciudad0 = new Ciudad(ubicacion0);
    Ciudad ciudad1 = new Ciudad(ubicacion1);
    Ciudad ciudad2 = new Ciudad(ubicacion2);
    Ciudad ciudad3 = new Ciudad(ubicacion3);
    Ciudad ciudad4 = new Ciudad(ubicacion4);

    // Locales
    Local local0 = new Local(TipoLocal.BIBLIOTECA);
    local0.setPista("Queria escalar el Monte Everest.");
    Local local1 = new Local(TipoLocal.BANCO);
    local1.setPista("Queria cambiar su dinero a yenes.");
    Local local2 = new Local(TipoLocal.BOLSA);
    local2.setPista("Ansiaba conocer verdaderos gauchos.");
    Local local3 = new Local(TipoLocal.AEROPUERTO);
    local3.setPista("Se marcho en un barco que flameaba una bandera blanca y roja.");

    ciudad0.agregarLocal(local0);
    ciudad1.agregarLocal(local1);
    ciudad2.agregarLocal(local2);
    ciudad3.agregarLocal(local3);

    // Creo Mapa
    Mapa mapa = new Mapa();
    mapa.agregarCiudad(ciudad0);
    mapa.agregarCiudad(ciudad1);
    mapa.agregarCiudad(ciudad2);
    mapa.agregarCiudad(ciudad3);
    mapa.agregarCiudad(ciudad4);

    // Creo ObjetoRobado
    ObjetoRobado objeto = new ObjetoRobado(Valor.COMUN);

    // Creo Ladron
    Perfil perfil = new Perfil("Carmen SanDiego", Sexo.FEMENINO, Cabello.ROJO, Senia.ANILLO, Vehiculo.LIMUSINA,
        Hobby.ALPINISMO);
    Ladron ladron = new Ladron(perfil);
    ladron.planearNuevoDestino(ciudad0);
    ladron.planearNuevoDestino(ciudad1);
    ladron.planearNuevoDestino(ciudad2);
    ladron.planearNuevoDestino(ciudad3);
    this.ladron = ladron;
    try { ladron.robarObjeto(objeto);
    } catch (LadronNoPlaneoEscapeException e) {
      Assert.fail();
    }

    // Creo Locacion
    Locacion locacionInicial = new Locacion(mapa, ciudad0, ladron);
    locacionInicial.agregarDestino(ciudad1);
    locacionInicial.agregarDestino(ciudad2);
    locacionInicial.agregarDestino(ciudad3);
    locacionInicial.agregarDestino(ciudad4);

    // Creo Turno
    Turno turno = new Turno(locacionInicial);
    this.turno = turno;

    // Creo Policia
    Policia policia = new Policia("Carl");
    policia.setTurno(turno);
    this.policia = policia;

    // Creo OrdenDeArresto
    OrdenDeArresto orden = new OrdenDeArresto();
    orden.agregarLadronABaseDeDatos(ladron);

    // Creo Partida
    this.partida = new Partida(policia, ladron, turno, orden);
  }

  @Test
  public void partidaDeberiaPerderseSiAgarrasOtroLadron() {
    Perfil perfilLadron = new Perfil("Josepha", Sexo.FEMENINO, Cabello.CASTANIO, Senia.CICATRIZ,
        Vehiculo.DESCAPOTABLE, Hobby.NATACION);
    Ladron ladronIncorrecto = new Ladron(perfilLadron);

    this.partida.emitirOrden(ladronIncorrecto);
    this.partida.atraparLadron();

    Assert.assertEquals(this.policia.getCantidadArrestos(), 0);
  }

  @Test
  public void partidaDeberiaPerderseSiSeAcabaElTiempo() {
    this.turno.actualizar(this.HORAS_TOTAL_JUEGO);
    Assert.assertEquals(this.policia.getCantidadArrestos(), 0);
  }

  @Test
  public void partidaDeberiaPerderseSiNoSeEmiteOrden() {
    this.partida.atraparLadron();
    Assert.assertEquals(this.policia.getCantidadArrestos(), 0);
  }

  @Test
  public void partidaDeberiaGanarseSiSeAgarraAlLadronCorrecto() {
    this.partida.emitirOrden(this.ladron);
    this.partida.atraparLadron();

    Assert.assertEquals(this.policia.getCantidadArrestos(), 1);
  }

  @Test
  public void interrogarEnCiudadQuePasoLadronDeberiaDevolverRespuestaCorrecta() {
   
    // Ladron viaja de la ciudad0 a la ciudad1 al iniciar el juego.
    Local local0 = this.turno.getLocales().get(0);
    Assert.assertEquals("Queria escalar el Monte Everest.", this.partida.interrogar(local0));

    // Viajo a pais por donde paso ladron
    Ciudad destinoConLadron = this.turno.getDestinos().get(0);
    this.partida.viajar(destinoConLadron);

    Local local1 = this.turno.getLocales().get(0);
    Assert.assertEquals("Queria cambiar su dinero a yenes.", this.partida.interrogar(local1));
  }

  @Test
  public void interrogarEnCiudadSinLadronDeberiaDevolverRespuestaPorDefecto() {
    // Viajo a pais sin ladron
    Ciudad destinoSinLadron = this.turno.getDestinos().get(1);
    this.partida.viajar(destinoSinLadron);

    Local local = this.turno.getLocales().get(0);

    Assert.assertEquals(this.MENSAJE_NO_ESTA_LADRON, this.partida.interrogar(local));
  }

  @Test
  public void deberiaAtraparLadronSiLadronTerminoItinerario() {
    // Ladron viaja de ciudad en ciudad hasta llegar a la ultima del recorrido.
    try {
      for (int i = 0; i < 3; i++) {
        this.turno.getLocacion().getLadron().escapar();
      }
    } catch (LadronNoPlaneoEscapeException e) {
      Assert.fail();
    }

    // Viajamos de ciudad en ciudad hasta llegar adonde esta el ladron.
    // En la lista de destinos, la ciudad donde fue el ladron es siempre la primera.
    for (int j = 0; j < 3; j++) {
      this.partida.viajar(this.partida.verDestinos().get(0));
    }

    this.partida.emitirOrden(this.ladron);
    this.partida.atraparLadron();

    Assert.assertEquals(this.policia.getCantidadArrestos(), 1);
  }

  @Test
  public void ciudadActualDeberiaCambiarAlViajar() {
    Ciudad ciudadDestino = this.partida.verDestinos().get(0);
    this.partida.viajar(ciudadDestino);

    Assert.assertEquals(ciudadDestino, this.partida.ciudadActual());
  }
 
  @Test
  public void deberiaSaberLasHorasDeViajeEntreCiudadActualYOtraCiudad() {
    Ciudad ciudad = this.partida.verDestinos().get(3);
   
    int hsViaje = this.partida.hsViajeAOtraCiudad(ciudad);

    Assert.assertEquals(3, hsViaje);
  }
}
TOP

Related Classes of test.modelo.PartidaTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.