@Test
  public void SeDestruyeUnPilonYDisminuyenLosSuministrosDelJugador()
      throws ExcepcionDeAccionDeUnidad, ExcepcionNoSePudoAgregarAlMapa,
          ExcepcionNoSePuedeConstruir {
    ProxyMapa proxyMapa = ProxyMapa.getInstance();
    proxyMapa.setCoordenadasMaximas(20, 20);

    Suministros s = new Suministros(0, 20);
    JugadorProtoss j1 = new JugadorProtoss(new Recursos(1000, 1000), s);
    j1.setVisibilidad(Vision.VisionCompleta(20, 20));
    JugadorTerran j2 = new JugadorTerran(new Recursos(200, 200), new Suministros(1, 20));
    j2.setVisibilidad(Vision.VisionCompleta(20, 20));
    ProxiDeAtaque.inicializar(j1);
    ProxiDeAtaque.inicializar(j2);
    ProxyDeHechizos.inicializar(j1);
    ProxyDeHechizos.inicializar(j2);
    Pilon p;
    Marine m = new Marine(Vision.VisionCompleta(10, 10));
    Coordenada coordDePilon = new Coordenada(7, 6);

    proxyMapa.agregar(m, new Coordenada(7, 5));
    j2.agregarUnidad(m);

    p = j1.construirPilon(coordDePilon);

    for (int i = 0; i < p.getTiempoDeConstruccion(); i++) j1.update();

    Assert.assertEquals(25, s.getSuministrosLimiteActuales());

    while (p.getVida() != 0) {
      m.atacar(coordDePilon);
      j2.update();
    }

    j1.update();

    Assert.assertEquals(20, s.getSuministrosLimiteActuales());
    Assert.assertFalse(j1.buscarConstruccion(p));
    Assert.assertFalse(proxyMapa.posicionTerrestreOcupada(coordDePilon));
  }
  @Test
  public void CreoDepositosDeSuministrosPeroNoPuedoSuperarLos200SuministrosMaximos()
      throws ExcepcionNoSePuedeConstruir, ExcepcionNoSePudoAgregarAlMapa {
    Suministros s = new Suministros(0, 191);
    JugadorTerran j = new JugadorTerran(new Recursos(1000, 1000), s);
    j.setVisibilidad(Vision.VisionCompleta(20, 20));
    DepositoDeSuministros d;

    d = j.construirDepositoDeSuministros(new Coordenada(1, 1));
    for (int i = 0; i < d.getTiempoDeConstruccion(); i++) j.update();
    j.construirDepositoDeSuministros(new Coordenada(1, 3));
    for (int i = 0; i < d.getTiempoDeConstruccion(); i++) j.update();
    j.construirDepositoDeSuministros(new Coordenada(1, 5));
    for (int i = 0; i < d.getTiempoDeConstruccion(); i++) j.update();

    Assert.assertEquals(200, s.getSuministrosLimiteActuales());
  }
  @Test
  public void CreoPilonesPeroNoPuedoSuperarLos200SuministrosMaximos()
      throws ExcepcionNoSePuedeConstruir, ExcepcionNoSePudoAgregarAlMapa {
    Suministros s = new Suministros(0, 191);
    JugadorProtoss j = new JugadorProtoss(new Recursos(1000, 1000), s);
    j.setVisibilidad(Vision.VisionCompleta(20, 20));
    Pilon p;

    p = j.construirPilon(new Coordenada(3, 5));
    for (int i = 0; i < p.getTiempoDeConstruccion(); i++) j.update();
    j.construirPilon(new Coordenada(3, 1));
    for (int i = 0; i < p.getTiempoDeConstruccion(); i++) j.update();
    j.construirPilon(new Coordenada(3, 2));
    for (int i = 0; i < p.getTiempoDeConstruccion(); i++) j.update();

    Assert.assertEquals(200, s.getSuministrosLimiteActuales());
  }
  @Test
  public void CreoVariosDepositosDeSuministrosYAumentanLosSuministrosLimiteActuales()
      throws ExcepcionNoSePuedeConstruir, ExcepcionNoSePudoAgregarAlMapa {
    Suministros s = new Suministros(0, 0);
    JugadorTerran j = new JugadorTerran(new Recursos(1000, 1000), s);
    j.setVisibilidad(Vision.VisionCompleta(20, 20));
    DepositoDeSuministros d;

    d = j.construirDepositoDeSuministros(new Coordenada(4, 6));
    for (int i = 0; i < d.getTiempoDeConstruccion(); i++) j.update();
    j.construirDepositoDeSuministros(new Coordenada(4, 1));
    for (int i = 0; i < d.getTiempoDeConstruccion(); i++) j.update();
    j.construirDepositoDeSuministros(new Coordenada(4, 2));
    for (int i = 0; i < d.getTiempoDeConstruccion(); i++) j.update();

    Assert.assertEquals(15, s.getSuministrosLimiteActuales());
  }
  @Test
  public void CreoVariosPilonesYAumentanLosSuministrosLimiteActuales()
      throws ExcepcionNoSePuedeConstruir, ExcepcionNoSePudoAgregarAlMapa {
    Suministros s = new Suministros(0, 0);
    JugadorProtoss j = new JugadorProtoss(new Recursos(1000, 1000), s);
    j.setVisibilidad(Vision.VisionCompleta(20, 20));
    Pilon p;

    p = j.construirPilon(new Coordenada(1, 2));
    for (int i = 0; i < p.getTiempoDeConstruccion(); i++) j.update();
    j.construirPilon(new Coordenada(1, 1));
    for (int i = 0; i < p.getTiempoDeConstruccion(); i++) j.update();
    j.construirPilon(new Coordenada(5, 2));
    for (int i = 0; i < p.getTiempoDeConstruccion(); i++) j.update();

    Assert.assertEquals(15, s.getSuministrosLimiteActuales());
  }