public void TestElObstaculoDeAceroEsDestruidoPorLaOndaExpansivaDeLaToleToleAlExplotar()
        {
            Obstaculo obstaculoDeAcero = new ObstaculoDeAcero();
            tablero.AgregarEntidad(obstaculoDeAcero, 5, 5);

            Bomba toleTole = new ToleTole();
            tablero.AgregarEntidad(toleTole, 5, 10);

            // asserts
            Assert.IsFalse(obstaculoDeAcero.FueDestruido());
            Assert.IsFalse(toleTole.FueDestruido());
            Assert.AreEqual(tablero.Casilla(5, 5).CantidadDeEntidades(), 1);
            Assert.AreEqual(tablero.Casilla(5, 10).CantidadDeEntidades(), 1);
            Assert.AreEqual(tablero.CantidadDeEntidades(), 2);

            // se invoca 5 veces el metodo explotar para hacer pasar el tiempo
            toleTole.Explotar();
            toleTole.Explotar();
            toleTole.Explotar();
            toleTole.Explotar();
            toleTole.Explotar();

            // actualiza el tablero, removiendo a aquellas entidades que fueron destruidas
            tablero.Actualizar();

            // asserts
            Assert.IsTrue(obstaculoDeAcero.FueDestruido());
            Assert.IsTrue(toleTole.FueDestruido());
            Assert.AreEqual(tablero.Casilla(5, 5).CantidadDeEntidades(), 0);
            Assert.AreEqual(tablero.Casilla(5, 10).CantidadDeEntidades(), 0);
            Assert.AreEqual(tablero.CantidadDeEntidades(), 0);
        }
        public void TestCreaUnaEntidadSinPosicion()
        {
            Entidad entidad = new ObstaculoDeAcero();

            // asserts
            Assert.IsTrue(entidad.Posicion() == null);
            Assert.AreEqual(entidad.Direccion()[0], 0);
            Assert.AreEqual(entidad.Direccion()[1], 1);
        }
        public void TestCreaUnaEntidadSinPosicionYLaPosicionaLuego()
        {
            Entidad entidad = new ObstaculoDeAcero();

            entidad.PosicionarEn(new Casilla(10, 20));

            // asserts
            Assert.AreEqual(entidad.Posicion().X, 10);
            Assert.AreEqual(entidad.Posicion().Y, 20);
        }
        public void TestCreaUnaEntidadConPosicion()
        {
            Entidad entidad = new ObstaculoDeAcero(new Casilla(10, 20));

            // asserts
            Assert.AreEqual(entidad.Posicion().X, 10);
            Assert.AreEqual(entidad.Posicion().Y, 20);
            Assert.AreEqual(entidad.Direccion()[0], 0);
            Assert.AreEqual(entidad.Direccion()[1], 1);
        }
        public void TestDireccionarALaEntidad()
        {
            Entidad entidad = new ObstaculoDeAcero();
            int[] direccion = { 1, 0 };

            entidad.Direccionar(direccion);

            // asserts
            Assert.AreEqual(entidad.Direccion()[0], 1);
            Assert.AreEqual(entidad.Direccion()[1], 0);
        }
        public void TestLaEntidadEstaEnDistintaPosicionQueLaOtraEntidad()
        {
            Casilla posicion_1 = new Casilla(1, 1);
            Casilla posicion_2 = new Casilla(2, 2);

            Entidad obstaculo_1 = new ObstaculoDeAcero();
            obstaculo_1.PosicionarEn(posicion_1);

            Entidad obstaculo_2 = new ObstaculoDeAcero();
            obstaculo_2.PosicionarEn(posicion_2);

            // asserts
            Assert.IsFalse(obstaculo_1.MismaPosicionQue(obstaculo_2));
        }
        public void TestLaEntidadEstaEnLaMismaPosicionQueLaOtraEntidad()
        {
            Casilla posicion = new Casilla(1, 1);

            Entidad obstaculo_1 = new ObstaculoDeAcero();
            obstaculo_1.PosicionarEn(posicion);

            Entidad obstaculo_2 = new ObstaculoDeAcero();
            obstaculo_2.PosicionarEn(posicion);

            // asserts
            Assert.IsTrue(obstaculo_1.MismaPosicionQue(obstaculo_2));
        }
        public void TestBombitaNoSePuedeMoverPorqueHayUnObstaculo()
        {
            bombita = Bombita.GetInstancia();
            bombita.PosicionarEn(Tablero.GetInstancia().Casilla(1, 1));
            Obstaculo obstaculo = new ObstaculoDeAcero(Tablero.GetInstancia().Casilla(2, 1));

            bombita.MoverAlSur();

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

            // limpia el tablero
            Tablero.Vaciar();
        }