コード例 #1
0
        public void DaniarSobreNaveDestruidaDeberiaArrojarExcepcion()
        {
            var posicion = new Posicion('e', 5);
            var mockNave = new MockNave(1, posicion, Direccion.Norte);

            mockNave.DaniarConDisparoConvencional(posicion);

            mockNave.DaniarConDisparoConvencional(posicion);
        }
コード例 #2
0
        public void DeberiaRevertirDireccionHorizontalAlIntentarAvanzarPasandoUltimaPosicion()
        {
            var mockNave = new MockNave(3, new Posicion('h', 4), Direccion.Este);

            mockNave.AvanzarPosicion();

            Assert.AreEqual(Direccion.Oeste, mockNave.Direccion);
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('g', 4))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('h', 4))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('i', 4))));
        }
コード例 #3
0
        public void DeberiaDevolverPosicionesOcupadasDiagonalmente()
        {
            var posicionInicial = new Posicion('d', 5);

            var mockNave = new MockNave(3, posicionInicial, Direccion.SurEste);

            Assert.AreEqual(3, mockNave.PosicionesOcupadas.Count());
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('d', 5))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('e', 6))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('f', 7))));
        }
コード例 #4
0
        public void DeberiaImpactarNave()
        {
            var minaConRetardo = new MinaConRetardo(new Posicion('a', 1));
            var mockNave       = new MockNave();

            minaConRetardo.ImpactarNave(mockNave);

            Assert.IsTrue(mockNave.DaniarConMinaInvocado);
            Assert.IsFalse(mockNave.DaniarConDisparoConvencionalInvocado);
            Assert.AreEqual(1, mockNave.ArgumentoPosicionesImpactadasRecibidoEnDaniarConMina.Count());
            Assert.IsTrue(mockNave.ArgumentoPosicionesImpactadasRecibidoEnDaniarConMina.ElementAt(0).Equals(new Posicion('a', 1)));
        }
コード例 #5
0
        public void MinaDeberiaDaniarNave()
        {
            var posicion = new Posicion('e', 5);
            var mockNave = new MockNave(3, posicion, Direccion.Norte);

            Assert.AreEqual(3, mockNave.PosicionesDePartesSanas.Count());
            Assert.AreEqual(0, mockNave.PosicionesDePartesDestruidas.Count());

            mockNave.DaniarConMina(new[] { posicion });

            Assert.AreEqual(2, mockNave.PosicionesDePartesSanas.Count());
            Assert.AreEqual(1, mockNave.PosicionesDePartesDestruidas.Count());
        }
コード例 #6
0
        public void DeberiaDaniarNaveConDisparoConvencionalPasandoleLasPosiciones()
        {
            var posicion            = new Posicion('a', 5);
            var disparoConvencional = new DisparoConvencional(posicion);
            var mockNave            = new MockNave();

            Assert.IsFalse(mockNave.DaniarConDisparoConvencionalInvocado);
            Assert.IsNull(mockNave.ArgumentoPosicionParaDaniarConDisparoConvencional);

            disparoConvencional.ImpactarNave(mockNave);

            Assert.IsTrue(mockNave.DaniarConDisparoConvencionalInvocado);
            Assert.AreEqual(posicion, mockNave.ArgumentoPosicionParaDaniarConDisparoConvencional);
        }
コード例 #7
0
        public void DisparoDeberiaDaniarNave()
        {
            var posicion = new Posicion('e', 5);
            var mockNave = new MockNave(3, posicion, Direccion.Norte);

            Assert.AreEqual(3, mockNave.PosicionesDePartesSanas.Count());
            Assert.AreEqual(0, mockNave.PosicionesDePartesDestruidas.Count());

            mockNave.DaniarConDisparoConvencional(posicion);

            Assert.AreEqual(2, mockNave.PosicionesDePartesSanas.Count());
            Assert.AreEqual(1, mockNave.PosicionesDePartesDestruidas.Count());
            Assert.IsTrue(mockNave.PosicionesDePartesDestruidas.ElementAt(0).Equals(posicion));
        }
コード例 #8
0
        public void DeberiaAvanzarUnaPosicionEnDiagonalHaciaElFrente()
        {
            var mockNave = new MockNave(3, new Posicion('d', 1), Direccion.SurEste);

            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('d', 1))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('e', 2))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('f', 3))));

            mockNave.AvanzarPosicion();

            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('e', 2))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('f', 3))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('g', 4))));
        }
コード例 #9
0
        public void DeberiaRevertirDireccionDiagonalAlIntentarAvanzarPasandoUltimaPosicion()
        {
            var mockNave = new MockNave(3, new Posicion('c', 3), Direccion.NorEste);

            Assert.AreEqual(Direccion.NorEste, mockNave.Direccion);
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('e', 1))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('d', 2))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('c', 3))));

            mockNave.AvanzarPosicion();

            Assert.AreEqual(Direccion.SurOeste, mockNave.Direccion);
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('b', 4))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('c', 3))));
            Assert.IsTrue(mockNave.PosicionesOcupadas.Any(po => po.Equals(new Posicion('d', 2))));
        }
コード例 #10
0
        public void NoDeberiaDevolverPartesDestruidasDeLasPuntasAlDevolverPosicionesDePartesSanas()
        {
            var posicionInicial = new Posicion('d', 5);

            var mockNave = new MockNave(3, posicionInicial, Direccion.Este);

            mockNave.DaniarConDisparoConvencional(new Posicion('d', 5));

            Assert.AreEqual(2, mockNave.PosicionesDePartesSanas.Count());
            Assert.IsTrue(mockNave.PosicionesDePartesSanas.Any(po => po.Equals(new Posicion('e', 5))));
            Assert.IsTrue(mockNave.PosicionesDePartesSanas.Any(po => po.Equals(new Posicion('f', 5))));

            mockNave.DaniarConDisparoConvencional(new Posicion('f', 5));

            Assert.AreEqual(1, mockNave.PosicionesDePartesSanas.Count());
            Assert.IsTrue(mockNave.PosicionesDePartesSanas.Any(po => po.Equals(new Posicion('e', 5))));
        }
コード例 #11
0
        public void DeberiaSetearDireccionAlConstruir()
        {
            var mockNave = new MockNave(1, new Posicion('e', 5), Direccion.Sur);

            Assert.AreEqual(Direccion.Sur, mockNave.Direccion);
        }
コード例 #12
0
        public void DeberiaSetearTamanioAlConstruir()
        {
            var mockNave = new MockNave(4, new Posicion('e', 5), Direccion.Norte);

            Assert.AreEqual(4, mockNave.Tamanio);
        }