Package test.modelo

Source Code of test.modelo.PoliciaTest

package test.modelo;

import java.util.List;

import modelo.Turno;
import modelo.excepciones.LadronNoPlaneoEscapeException;
import modelo.ladron.Ladron;
import modelo.ladron.ObjetoRobado;
import modelo.ladron.Valor;
import modelo.ladron.perfil.Cabello;
import modelo.ladron.perfil.Hobby;
import modelo.ladron.perfil.Perfil;
import modelo.ladron.perfil.Senia;
import modelo.ladron.perfil.Sexo;
import modelo.ladron.perfil.Vehiculo;
import modelo.mapa.Ciudad;
import modelo.mapa.Coordenada;
import modelo.mapa.Locacion;
import modelo.mapa.Local;
import modelo.mapa.Mapa;
import modelo.mapa.TipoLocal;
import modelo.policia.Policia;

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

import junit.framework.Assert;

public class PoliciaTest {

  private Policia policia;
  private Turno turno;
  private Ladron ladron;

  @Before
  public void setUp() {

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

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

    // Creo 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);
    ciudad0.agregarLocal(local0);
    ciudad1.agregarLocal(local1);
    ciudad2.agregarLocal(local2);

    // 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);
    this.ladron = new Ladron(perfil);
    ladron.planearNuevoDestino(ciudad0);
    ladron.planearNuevoDestino(ciudad1);
    ladron.planearNuevoDestino(ciudad2);
    ladron.planearNuevoDestino(ciudad3);
    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
    this.policia = new Policia("John");
    this.policia.setTurno(turno);
  }

  @Test
  public void policiaDeberiaIniciarComoNovato() {

    Assert.assertEquals(0, policia.getCantidadArrestos());
    Assert.assertEquals("Novato", policia.getRango().getNombre());
  }

  @Test
  public void policiaDeberiaAscenderDeRango() {

    for (int i = 0; i < 5; i++) {
      policia.realizarArresto();
    }
    Assert.assertEquals("Detective", policia.getRango().getNombre());

    for (int i = 0; i < 5; i++) {
      policia.realizarArresto();
    }
    Assert.assertEquals("Investigador", policia.getRango().getNombre());

    for (int i = 0; i < 10; i++) {
      policia.realizarArresto();
    }
    Assert.assertEquals("Sargento", policia.getRango().getNombre());
  }

  @Test
  public void policiaDeberiaTenerDeterminadaVelocidadAlAscenderDeRango() {

    Assert.assertEquals(900, policia.getRango().getVelocidad().getKmPorHora());

    for (int i = 0; i < 5; i++) {
      policia.realizarArresto();
    }
    Assert.assertEquals(1100, policia.getRango().getVelocidad().getKmPorHora());

    for (int i = 0; i < 5; i++) {
      policia.realizarArresto();
    }
    Assert.assertEquals(1300, policia.getRango().getVelocidad().getKmPorHora());

    for (int i = 0; i < 10; i++) {
      policia.realizarArresto();
    }
    Assert.assertEquals(1500, policia.getRango().getVelocidad().getKmPorHora());
  }

  @Test
  public void policiaDeberiaCambiarDeLugarAlViajar() {
   
    List<Ciudad> listaDestinos = policia.verDestinos();
    Ciudad ciudadObjetivo = listaDestinos.get(0);

    try {
      policia.viajar(ciudadObjetivo);
    } catch (LadronNoPlaneoEscapeException e) {
      Assert.fail();
    }

    Ciudad ciudadActual = policia.ciudadActual();

    Assert.assertEquals(ciudadObjetivo, ciudadActual);
  }

  @Test
  public void interrogarDeberiaDevolverLaRespuestaCorrecta() {
    // 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.turno.interrogar(local0));

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

    // Ladron viaja de la ciudad1 a la ciudad2.
    try {
      this.ladron.escapar();
    } catch (LadronNoPlaneoEscapeException e) {
      Assert.fail();
    }

    try {
      this.turno.viajar(destinoConLadron, this.policia.getRango().getVelocidad());
    } catch (LadronNoPlaneoEscapeException e) {
      assert false;
    }

    Local local2 = this.turno.getLocales().get(0);
    Assert.assertEquals(local2.responder(), policia.interrogar(local2));
    Assert.assertEquals("Queria cambiar su dinero a yenes.", local2.responder());
  }
}
TOP

Related Classes of test.modelo.PoliciaTest

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.