コード例 #1
0
        public void Deve_gravar_no_banco_a_exploracao_da_sonda_iniciando_em_12N_com_a_serie_de_instruncoes_LMLMLMLMM()
        {
            var    posicaoDesejada = new Posicao(1, 2);
            Sondas sondas          = new Sondas(db);

            sonda = new Sonda(especificacaoDeNegocio, nomeDaSonda);
            sonda.Explorar(planalto);
            sonda.IniciarEm(posicaoDesejada, DirecaoCardinal.Norte);
            sonda.Vire(DirecaoMovimento.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Vire(DirecaoMovimento.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Vire(DirecaoMovimento.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Vire(DirecaoMovimento.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Move(movimentoSempreParaFrente);

            sondas.Gravar(sonda);

            var posicaoEsperada = new Posicao(1, 3);

            Assert.AreEqual(posicaoEsperada, sonda.PosicaoAtual);
            Assert.AreEqual(nomeDaSonda, sonda.Nome);
            Assert.AreEqual(DirecaoCardinal.Norte, sonda.DirecaoCardinalAtual);
        }
コード例 #2
0
        public void Move_R(EFront front, string result)
        {
            // Arrange
            var sonda = new Sonda(front: front);

            // Act
            sonda.Move('R');

            // Assert
            Assert.Equal(result, sonda.ToString());
        }
コード例 #3
0
        public void Deve_fazer_a_exploracao_com_a_sonda_iniciando_em_12N_com_a_serie_de_instruncoes_LMLMLMLMM()
        {
            IMongoDatabase db     = new ProvedorDeAcesso().Criar(conexaoComOBanco);
            Sondas         sondas = new Sondas(db);

            sonda = new Sonda("Mark I");
            sonda.Explorar(planalto);

            var posicaoDesejada = new Posicao(1, 2);
            var posicaoEsperada = new Posicao(1, 3);

            sonda.IniciarEm(posicaoDesejada, DirecaoCardinal.Norte);

            sonda.Vire(Direcao.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Vire(Direcao.Esqueda);
            sonda.Move(movimentoSempreParaFrente);

            sondas.Gravar(sonda);
            var idGerado = sonda.Id;

            sonda = sondas.ObterPorId(idGerado);

            sonda.Vire(Direcao.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Vire(Direcao.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Move(movimentoSempreParaFrente);

            sondas.Gravar(sonda);
            var idEsperado = sonda.Id;

            Assert.AreNotEqual("00000000-0000-0000-0000-000000000000", sonda.Id.ToString());
            Assert.AreEqual(idEsperado, idGerado);
            Assert.AreEqual(posicaoEsperada, sonda.PosicaoAtual);
            Assert.AreEqual(DirecaoCardinal.Norte, sonda.DirecaoAtual);
        }
コード例 #4
0
        public string MoveSonda(Sonda sonda, string moves = "", Position limit = null)
        {
            if (sonda == null)
            {
                return(string.Empty);
            }
            if (string.IsNullOrWhiteSpace(moves))
            {
                return(sonda.ToString());
            }

            foreach (var move in moves)
            {
                sonda.Move(move);
            }

            return(sonda.ToString(limit));
        }
コード例 #5
0
        private void ExecutarInstrucaoDeMovimentoNaSonda(Sonda sonda, IMovimento movimentoSempreParaFrente)
        {
            for (int contador = 0; contador < serieDeInstrucoesIndicandoParaASondaComoElaDeveraExplorarOPlanalto.Length; contador++)
            {
                var instrucao = serieDeInstrucoesIndicandoParaASondaComoElaDeveraExplorarOPlanalto[contador];

                switch (instrucao)
                {
                case "L":
                    sonda.Vire(Direcao.Esqueda);
                    break;

                case "R":
                    sonda.Vire(Direcao.Direita);
                    break;

                case "M":
                    sonda.Move(movimentoSempreParaFrente);
                    break;
                }
            }
        }
コード例 #6
0
        public Sonda ObterPorId(Guid id)
        {
            var coordenada = new Coordenada(5, 5);
            var planalto   = new Planalto();

            planalto.Criar(coordenada);

            var movimentoSempreParaFrente = new MovimentoParaFrente();
            var sonda = new Sonda("Mark I");

            sonda.Explorar(planalto);

            var posicaoDesejada = new Posicao(1, 2);

            sonda.IniciarEm(posicaoDesejada, DirecaoCardinal.Norte);

            sonda.Vire(Direcao.Esqueda);
            sonda.Move(movimentoSempreParaFrente);


            return(sonda);
        }
コード例 #7
0
        public void Deve_fazer_a_exploracao_virando_e_movendo_a_sonda_para_uma_nova_coordenada()
        {
            var posicaoDesejada = new Posicao(1, 2);

            sonda.IniciarEm(posicaoDesejada, DirecaoCardinal.Norte);
            sonda.Vire(DirecaoMovimento.Esqueda);

            sonda.Move(movimentoSempreParaFrente);

            var posicaoEsperada = new Posicao(0, 2);

            Assert.AreEqual(posicaoEsperada, sonda.PosicaoAtual);
            Assert.AreEqual(DirecaoCardinal.Oeste, sonda.DirecaoCardinalAtual);
        }
コード例 #8
0
        public void Deve_fazer_a_exploracao_com_a_sonda_iniciando_em_12N_com_a_serie_de_instruncoes_LMLMLMLMM()
        {
            var posicaoDesejada = new Posicao(1, 2);
            var posicaoEsperada = new Posicao(1, 3);

            sonda.IniciarEm(posicaoDesejada, DirecaoCardinal.Norte);

            sonda.Vire(Direcao.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Vire(Direcao.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Vire(Direcao.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Vire(Direcao.Esqueda);
            sonda.Move(movimentoSempreParaFrente);
            sonda.Move(movimentoSempreParaFrente);

            Assert.IsFalse(sonda.QuebraDeEspeficacao.HouveViolacao());
            Assert.AreEqual(posicaoEsperada, sonda.PosicaoAtual);
            Assert.AreEqual(DirecaoCardinal.Norte, sonda.DirecaoAtual);
        }