public void BombitaAgarreUnTimerYSusBombasTardenMasEnExplotar()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            Timer articulo = new Timer();
            tablero.AgregarEntidadEnCasillero(articulo, 0, 1);

            bombita.MoverAbajo();
            bombita.LanzarBomba();
            bombita.MoverDerecha();
            bombita.MoverAbajo();

            bombita.Bomba.CuandoPaseElTiempo(1);
            Assert.IsTrue(bombita.Bomba.FueDestruido());

            bombita.MoverArriba();
            bombita.MoverArriba();
            Assert.AreEqual(0.85,bombita.PorcentajeDeRetardo);
            bombita.MoverDerecha();
            bombita.LanzarBomba();
            bombita.MoverDerecha();
            bombita.MoverAbajo();
            bombita.Bomba.CuandoPaseElTiempo(0.9);

            Assert.IsTrue(bombita.Bomba.FueDestruido());

            Assert.AreEqual(3, bombita.Vidas);
        }
        public void BombitaAgarreUnBombaToleToleYCambieElTipoDeBombaQueLanza()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            BombaToleTole articulo = new BombaToleTole();
            tablero.AgregarEntidadEnCasillero(articulo, 0, 1);

            bombita.MoverAbajo();
            bombita.LanzarBomba();
            bombita.MoverDerecha();
            bombita.MoverAbajo();

            bombita.Bomba.CuandoPaseElTiempo(1);
            Assert.IsInstanceOf<Molotov>(bombita.Bomba);

            bombita.MoverArriba();
            bombita.MoverArriba();
            bombita.MoverDerecha();
            bombita.LanzarBomba();
            bombita.MoverDerecha();
            bombita.MoverAbajo();
            bombita.Bomba.CuandoPaseElTiempo(10);
            Assert.IsTrue(bombita.Bomba.FueDestruido());
            Assert.IsInstanceOf<ToleTole>(bombita.Bomba);

            bombita.LanzarBomba();
            bombita.MoverDerecha();
            bombita.MoverAbajo();
            bombita.Bomba.CuandoPaseElTiempo(5);
            Assert.IsInstanceOf<ToleTole>(bombita.Bomba);
        }
        public void CuandoSeMueveBombitaALaDerechaCambiaSuPosicionEnElTablero()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);

            bombita.MoverDerecha();

            Assert.AreEqual(1, bombita.Posicion.Columna);
            Assert.AreEqual(0, bombita.Posicion.Fila);
        }
        public void BombitaIntentaLanzarDosBombasALaVez()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            Bomba bomba = bombita.Bomba;

            bombita.LanzarBomba();
            bombita.MoverAbajo();
            bombita.MoverDerecha();

            bombita.LanzarBomba();
            bombita.MoverDerecha();

            bomba.CuandoPaseElTiempo(3);

            Assert.AreEqual(3, bombita.Vidas);
        }
        public void PruebaQueBombitaLanceUnaBombaAlLadoDeUnBloquesDeLadrillosYLosDestruya()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            BloqueDeLadrillos bloque = new BloqueDeLadrillos();
            tablero.AgregarEntidadEnCasillero(bloque, 0, 2);
            Bomba bomba = bombita.Bomba;

            bombita.MoverDerecha();
            bombita.LanzarBomba();

            bombita.MoverAbajo();
            bombita.MoverIzquierda();

            bomba.CuandoPaseElTiempo(5);

            Assert.IsTrue(bloque.FueDestruido());
        }
        public void CreaUnTableroConBombitaYUnTimerYMueveABombitaHastaAgarrarlo()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            Timer articulo = new Timer();
            tablero.AgregarEntidadEnCasillero(articulo, 0, 2);

            bombita.MoverDerecha();
            bombita.MoverDerecha();
            //Con un articulo, bombita debe agarrarlo y avanzar a su posicion. El articulo no debe estar mas en el tablero
            Assert.IsNull(articulo.Posicion);
            Assert.AreEqual(0, bombita.Posicion.Fila);
            Assert.AreEqual(2, bombita.Posicion.Columna);
            Assert.AreEqual(0.85, bombita.PorcentajeDeRetardo);
        }
        public void CreaUnTableroConBombitaYUnObstaculoYMueveABombitaHastaChocarse()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            BloqueDeAcero bloque = new BloqueDeAcero();
            tablero.AgregarEntidadEnCasillero(bloque, 0, 2);

            bombita.MoverDerecha();
            bombita.MoverDerecha();
            //Cuando trata de ir a donde hay un bloque no pasa nada
            Assert.AreEqual(0, bloque.Posicion.Fila);
            Assert.AreEqual(2, bloque.Posicion.Columna);
            Assert.AreEqual(0, bombita.Posicion.Fila);
            Assert.AreEqual(1, bombita.Posicion.Columna);
        }
        public void CreaUnTableroConBombitaYUnHabanoYMueveABombitaHastaAgarrarlo()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            Habano habano = new Habano();
            tablero.AgregarEntidadEnCasillero(habano, 0, 2);

            bombita.MoverDerecha();
            bombita.MoverDerecha();
            //Con un articulo, bombita debe agarrarlo y avanzar a su posicion. El articulo no debe estar mas en el tablero
            Assert.IsNull(habano.Posicion);
            Assert.AreEqual(0, bombita.Posicion.Fila);
            Assert.AreEqual(2, bombita.Posicion.Columna);
            Assert.AreEqual(10, bombita.Velocidad);
        }
        public void CreaUnTableroConBombitaYUnBombaToleToleYMueveABombitaHastaAgarrarlo()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            BombaToleTole articulo = new BombaToleTole();
            tablero.AgregarEntidadEnCasillero(articulo, 0, 2);

            bombita.MoverDerecha();
            bombita.MoverDerecha();
            //Con un articulo, bombita debe agarrarlo y avanzar a su posicion. El articulo no debe estar mas en el tablero
            Assert.IsNull(articulo.Posicion);
            Assert.AreEqual(0, bombita.Posicion.Fila);
            Assert.AreEqual(2, bombita.Posicion.Columna);
            Assert.IsInstanceOf<ToleTole>(bombita.Bomba);
        }
        public void CreaUnTableroConBombitaYUnBloqueConUnArticuloYQueBombitaLoAgarre()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita,0,0);

            BloqueDeCemento bloque = new BloqueDeCemento();
            tablero.AgregarEntidadEnCasillero(bloque, 0, 1);
            Habano habano = new Habano();
            bloque.Articulo = habano;

            bloque.DaniarConToleTole(new ToleTole());

            bombita.MoverDerecha();

            Assert.AreEqual(0, bombita.Posicion.Fila);
            Assert.AreEqual(1, bombita.Posicion.Columna);
            Assert.AreEqual(10, bombita.Velocidad);
        }
        public void CreaUnTableroConBombitaYUnaBombaYMueveABombitaHastaChocar()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            Molotov bomba = new Molotov();
            tablero.AgregarEntidadEnCasillero(bomba, 0, 2);

            bombita.MoverDerecha();
            bombita.MoverDerecha();
            //Con una bomba, no pasa nada, bombita no puede avanzar
            Assert.AreEqual(0, bombita.Posicion.Fila);
            Assert.AreEqual(1, bombita.Posicion.Columna);
            Assert.AreEqual(0, bomba.Posicion.Fila);
            Assert.AreEqual(2, bomba.Posicion.Columna);
        }
        public void CreaUnEnemigoYUnBombitaYLoLastimaConUnaMolotovAlEnemigoYASiMismo()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            LopezR enemigo = new LopezR();
            tablero.AgregarEntidadEnCasillero(enemigo, 0, 2);
            Bomba bomba = bombita.Bomba;

            bombita.MoverDerecha();
            bombita.LanzarBomba();

            bombita.MoverIzquierda();

            bomba.CuandoPaseElTiempo(5);

            Assert.AreEqual(5, enemigo.Resistencia);
            Assert.AreEqual(2, bombita.Vidas);
        }
        public void CreaUnEnemigoYUnBombitaYLanzaDosBombasYLoDestruye()
        {
            Tablero tablero = new Tablero();
            Bombita bombita = new Bombita();
            tablero.AgregarEntidadEnCasillero(bombita, 0, 0);// Arranca en (0,0)
            LopezR enemigo = new LopezR();
            tablero.AgregarEntidadEnCasillero(enemigo, 0, 2);
            Bomba bomba1 = bombita.Bomba;

            bombita.LanzarBomba();

            bombita.MoverAbajo();
            bombita.MoverDerecha();

            bomba1.CuandoPaseElTiempo(5);

            bombita.MoverArriba();
            bombita.LanzarBomba();
            Bomba bomba2 = bombita.Bomba;
            bombita.MoverAbajo();
            bombita.MoverIzquierda();

            bomba2.CuandoPaseElTiempo(5);

            Assert.IsTrue(enemigo.FueDestruido());
        }