public void TestElArticuloHabanoEsDestruidoPorElProyectil()
        {
            habano = new Habano();

            habano.DaniarPorProyectil(new Proyectil());

            // asserts
            Assert.IsTrue(habano.FueDestruido());
        }
        public void TestElArticuloTimerEsDestruidoPorElProyectil()
        {
            timer = new Timer();

            timer.DaniarPorProyectil(new Proyectil());

            // asserts
            Assert.IsTrue(timer.FueDestruido());
        }
        public void TestElArticuloBombaToleToleEsDestruidoPorElProyectil()
        {
            bombaToleTole = new BombaToleTole();

            bombaToleTole.DaniarPorProyectil(new Proyectil());

            // asserts
            Assert.IsTrue(bombaToleTole.FueDestruido());
        }
        public void TestElArticuloSalidaEsAlcanzadoPorLaToleTolePeroNoSufreDanioAlguno()
        {
            salida = new Salida();

            salida.DaniarPorToletole(new ToleTole());

            // asserts
            Assert.IsFalse(salida.FueDestruido());
        }
        public void TestElArticuloSalidaEsAlcanzadoPorElProyectilPeroNoSufreDanioAlguno()
        {
            salida = new Salida();

            salida.DaniarPorProyectil(new Proyectil());

            // asserts
            Assert.IsFalse(salida.FueDestruido());
        }
        public void TestElArticuloBombaToleToleEsDestruidoPorLaToleTole()
        {
            bombaToleTole = new BombaToleTole();

            bombaToleTole.DaniarPorToletole(new ToleTole());

            // asserts
            Assert.IsTrue(bombaToleTole.FueDestruido());
        }
        public void TestElArticuloSalidaEsAlcanzadoPorLaMolotovPeroNoSufreDanioAlguno()
        {
            salida = new Salida();

            salida.DaniarPorMolotov(new Molotov());

            // asserts
            Assert.IsFalse(salida.FueDestruido());
        }
        public void TestElArticuloTimerEsDestruidoPorLaToleTole()
        {
            timer = new Timer();

            timer.DaniarPorToletole(new ToleTole());

            // asserts
            Assert.IsTrue(timer.FueDestruido());
        }
        public void TestElArticuloTimerEsDestruidoPorLaMolotov()
        {
            timer = new Timer();

            timer.DaniarPorMolotov(new Molotov());

            // asserts
            Assert.IsTrue(timer.FueDestruido());
        }
        public void TestElArticuloHabanoEsDestruidoPorLaMolotov()
        {
            habano = new Habano();

            habano.DaniarPorMolotov(new Molotov());

            // asserts
            Assert.IsTrue(habano.FueDestruido());
        }
        public void TestCreaUnArticuloSalida()
        {
            salida = new Salida();

            // asserts
            Assert.IsTrue(salida.EsArticulo());
            Assert.IsFalse(salida.EsBomba());
            Assert.IsFalse(salida.EsBombita());
            Assert.IsFalse(salida.EsEnemigo());
            Assert.IsFalse(salida.EsObstaculo());
            Assert.IsFalse(salida.EsPersonaje());
            Assert.IsFalse(salida.FueDestruido());
            Assert.IsTrue(salida.PuedeSuperponerse());
        }
        public void TestCreaUnArticuloHabano()
        {
            habano = new Habano();

            // asserts
            Assert.IsTrue(habano.EsArticulo());
            Assert.IsFalse(habano.EsBomba());
            Assert.IsFalse(habano.EsBombita());
            Assert.IsFalse(habano.EsEnemigo());
            Assert.IsFalse(habano.EsObstaculo());
            Assert.IsFalse(habano.EsPersonaje());
            Assert.IsFalse(habano.FueDestruido());
            Assert.IsTrue(habano.PuedeSuperponerse());
        }
        public void TestCreaUnArticuloTimer()
        {
            timer = new Timer();

            // asserts
            Assert.IsTrue(timer.EsArticulo());
            Assert.IsFalse(timer.EsBomba());
            Assert.IsFalse(timer.EsBombita());
            Assert.IsFalse(timer.EsEnemigo());
            Assert.IsFalse(timer.EsObstaculo());
            Assert.IsFalse(timer.EsPersonaje());
            Assert.IsFalse(timer.FueDestruido());
            Assert.IsTrue(timer.PuedeSuperponerse());
        }
        public void TestCreaUnArticuloBombaToleTole()
        {
            bombaToleTole = new BombaToleTole();

            // asserts
            Assert.IsTrue(bombaToleTole.EsArticulo());
            Assert.IsFalse(bombaToleTole.EsBomba());
            Assert.IsFalse(bombaToleTole.EsBombita());
            Assert.IsFalse(bombaToleTole.EsEnemigo());
            Assert.IsFalse(bombaToleTole.EsObstaculo());
            Assert.IsFalse(bombaToleTole.EsPersonaje());
            Assert.IsFalse(bombaToleTole.FueDestruido());
            Assert.IsTrue(bombaToleTole.PuedeSuperponerse());
        }
        public void TestElArticuloTimerReduceEnUn15PorcientoElRetardoQueTieneBombitaParaQueExplotenLasBombasQueColoca()
        {
            Casilla posicion = Tablero.GetInstancia().Casilla(1, 1);
            Bombita bombita = Bombita.GetInstancia();
            bombita.PosicionarEn(posicion);
            timer = new Timer();
            timer.PosicionarEn(posicion);

            timer.ModificarABombita();

            // bombita tiene 0.85 como porcentaje de retardo
            Assert.AreEqual(bombita.PorcentajeDeRetardo(), 0.85);

            // limpia el tablero
            Tablero.Vaciar();
        }
        public void TestElArticuloBombaToleToleHaceQueBombitaPaseAColocarBombasToleToleUnicamente()
        {
            Casilla posicion = Tablero.GetInstancia().Casilla(1, 1);

            Bombita bombita = Bombita.GetInstancia();
            bombita.PosicionarEn(posicion);
            bombaToleTole = new BombaToleTole();
            bombaToleTole.PosicionarEn(posicion);

            bombaToleTole.ModificarABombita();

            bombita.LanzarExplosivo();

            // se comprueba que ahora bombita lance bombas tole tole unicamente
            Entidad toleTole = posicion.GetEntidades()[2];
            // asserts
            Assert.AreEqual(((Bomba)toleTole).GetRango(), 6);

            // limpia el tablero y la instancia de bombita
            Tablero.Vaciar();
        }
        public void TestElArticuloHabanoAumentaLaVelocidadDeDesplazamientoDeBombita()
        {
            Casilla posicion = Tablero.GetInstancia().Casilla(1, 1);

            Bombita bombita = Bombita.GetInstancia();
            bombita.PosicionarEn(posicion);
            habano = new Habano();
            habano.PosicionarEn(posicion);

            habano.ModificarABombita();

            // bombita aumento su velocidad por lo que se mueve dos casilleros
            bombita.MoverAlEste();

            // asserts
            Assert.AreEqual(bombita.Posicion().X, 1);
            Assert.AreEqual(bombita.Posicion().Y, 3);

            // limpia el tablero
            Tablero.Vaciar();
        }
        public void TestElArticuloHabanoEsDestruidoPorLaToleTole()
        {
            habano = new Habano();

            habano.DaniarPorToletole(new ToleTole());

            // asserts
            Assert.IsTrue(habano.FueDestruido());
        }