Exemple #1
0
        public void TestGetPosition()
        {
            List <Object> position = new List <Object>
            {
                new
                {
                    x = "0"
                },

                new
                {
                    y = "0"
                },

                new
                {
                    face = "D"
                }
            };

            Object expectedReturnJSON = new
            {
                position
            };

            string expectedReturn = (new JavaScriptSerializer()).Serialize(expectedReturnJSON);

            Sonda sonda = new Sonda();

            sonda.GetPosition();

            string returnTest = HttpContext.Current.Response.Output.ToString();

            Assert.AreEqual(expectedReturn, returnTest);
        }
        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);
        }
Exemple #3
0
        public void Gravar(Sonda sonda)
        {
            try
            {
                if (sonda.HouveViolacao())
                {
                    return;
                }

                var sondaExiste = ObterPorNome(sonda.Nome);
                if (sondaExiste == null)
                {
                    Todas().InsertOne(sonda);
                }
                else
                {
                    Expression <Func <Sonda, bool> > filtro = filtra => filtra.Id.Equals(sonda.Id);
                    Todas().ReplaceOne(filtro, sonda);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #4
0
        private static void Main(string[] args)
        {
            var           plateuSize      = "";
            var           initialPosition = new List <string>();
            var           x         = new List <string>();
            var           y         = new List <string>();
            var           position  = new List <string>();
            var           direction = new List <string>();
            IMovementable sondaA    = new Sonda();
            IMovementable sondaB    = new Sonda();

            (int, int, string)valueSondaA = (0, 0, null);
            (int, int, string)valueSondaB = (0, 0, null);

            Console.Title = "NASA - Programa Espacial";
            Console.WriteLine("Insira as Coordenadas do Ponto Superior Direito: ");
            plateuSize = Console.ReadLine();

            Console.WriteLine("Insira a posição inicial das sondas: ");
            initialPosition.Add(Console.ReadLine().ToUpper());
            initialPosition.Add(Console.ReadLine().ToUpper());

            x.Add(initialPosition[0].Substring(0, 1));
            y.Add(initialPosition[0].Substring(1, 1));
            x.Add(initialPosition[1].Substring(0, 1));
            y.Add(initialPosition[1].Substring(1, 1));

            if (Convert.ToInt32(x[0]) > Convert.ToInt32(plateuSize.Substring(0, 1)) ||
                Convert.ToInt32(y[0]) > Convert.ToInt32(plateuSize.Substring(1, 1)))
            {
                initialPosition.RemoveRange(0, 1);
                Console.WriteLine(
                    "Reinsira a posição inicial, a mesma não pode ser maior que o tamanho do planalto: ");
                initialPosition.Add(Console.ReadLine().ToUpper());
            }
            if (Convert.ToInt32(x[1]) > Convert.ToInt32(plateuSize.Substring(0, 1)) ||
                Convert.ToInt32(y[1]) > Convert.ToInt32(plateuSize.Substring(1, 1)))
            {
                initialPosition.RemoveRange(1, 1);
                Console.WriteLine(
                    "Reinsira a posição inicial, a mesma não pode ser maior que o tamanho do planalto: ");
                initialPosition.Add(Console.ReadLine().ToUpper());
            }

            position.Add(initialPosition[0].Substring(2, 1));
            position.Add(initialPosition[1].Substring(2, 1));

            if (initialPosition.Count == 2)
            {
                Console.WriteLine("Insira a direção para movimentar a sonda");
                direction.Add(Console.ReadLine().ToUpper());
                direction.Add(Console.ReadLine().ToUpper());
            }
            valueSondaA = ImpressaoAsync(valueSondaA, sondaA, position, x, y, direction, 0).Result;
            valueSondaB = ImpressaoAsync(valueSondaB, sondaB, position, x, y, direction, 1).Result;
            Console.WriteLine("A posição da sonda passou a ser:");
            Console.WriteLine($"{valueSondaA.Item1} {valueSondaA.Item2} {valueSondaA.Item3}");
            Console.WriteLine($"{valueSondaB.Item1} {valueSondaB.Item2} {valueSondaB.Item3}");
            Console.ReadLine();
        }
Exemple #5
0
        private void ExecutarExploracao(int sondaNumero)
        {
            Sondas sondas = new Sondas(bancoDeDados);

            Planalto planalto = new Planalto();

            planalto.Criar(coordenada);

            movimentoSempreParaFrente = new MovimentoParaFrente();

            var nomeDaSonda = $"Mark {sondaNumero}";

            Sonda sonda = ObterSonda(sondas, nomeDaSonda);

            sonda.Explorar(planalto);

            sonda.IniciarEm(posicaoInicioalDaSonda, direcaoCardinalInicioalDaSonda);

            ExecutarInstrucaoDeMovimentoNaSonda(sonda, movimentoSempreParaFrente);

            sondas.Gravar(sonda);

            sondas = null;

            var direcao = sonda.DirecaoCardinalAtual.ToString().ToUpper().Substring(0, 1).Replace("O", "W").Replace("L", "E");

            if (sondaNumero > 1)
            {
                resultado += "-";
            }

            resultado += $"{sonda.PosicaoAtual.X} {sonda.PosicaoAtual.Y} {direcao}";
        }
        static bool AdicionaSondas(int numeroSondas, out string xMsg)
        {
            if (!ValidarNumeroSondas(numeroSondas, out xMsg))
            {
                return(false);
            }

            for (int i = 0; i < numeroSondas; i++)
            {
                Console.WriteLine(string.Format("Digite o nome da {0}º Sonda", new object[] { (i + 1) }));
                string nomeSonda = Console.ReadLine();

                if (string.IsNullOrEmpty(nomeSonda))
                {
                    Console.WriteLine("*** AVISO DEVIDO NOMES INVÁLIDOS ESTA SONDA SERÁ IGNORADA ");
                    continue;
                }

                Console.WriteLine("Digite o eixo X do Planalto");
                int xPlanalto = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine("Digite o eixo Y do Planalto");
                int yPlanalto = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine("Digite o eixo X da Localização da Sonda");
                int xSonda = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine("Digite o eixo Y da Localização da Sonda ");
                int ySonda = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine("Qual a Direção da Sonda ? (N Para norte, S para SUL, L para LESTE , O para Oeste) ");
                string  direcao = Console.ReadLine();
                Sentido sentido = Sentido.Norte;

                switch (direcao.ToUpper())
                {
                case "N":
                    sentido = Sentido.Norte;
                    break;

                case "S":
                    sentido = Sentido.Sul;
                    break;

                case "L":
                    sentido = Sentido.Leste;
                    break;

                case "O":
                    sentido = Sentido.Oeste;
                    break;
                }

                Sonda sonda = Sonda.EfetuarLancamento(nomeSonda, new Coordenadas(xPlanalto, yPlanalto), new Localizacao(new Coordenadas(xSonda, ySonda), sentido));
                sondas.Add(sonda);
            }

            return(true);
        }
Exemple #7
0
        public void Deve_fazer_a_exploracao_virando_e_movendo_a_sonda_para_uma_nova_coordenada()
        {
            var posicaoEsperada = new Posicao(0, 2);

            sonda = new Sondas().ObterPorId(Guid.NewGuid());

            Assert.AreEqual(posicaoEsperada, sonda.PosicaoAtual);
            Assert.AreEqual(DirecaoCardinal.Oeste, sonda.DirecaoAtual);
        }
        private Sonda IniciarSonda()
        {
            var posicaoXY = new PosicaoXY(5, 5);

            planalto = new Planalto(posicaoXY);
            Sonda sonda = new Sonda(planalto);

            return(sonda);
        }
        static void SondasIniciadas()
        {
            while (true)
            {
                Console.ForegroundColor = ConsoleColor.DarkRed;
                Console.WriteLine("Digite o nome de uma sonda + ',' (Movimentos) Exemplo Sonda1, LMRMLL - Para Movimentar Uma Sonda, Ou Exit Para Sair");
                string retorno = Console.ReadLine();

                if (retorno.ToLower() == "exit")
                {
                    return;
                }

                string[] valores = retorno.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

                if (valores.Length < 2)
                {
                    continue;
                }

                string nome       = valores[0];
                string movimentos = valores[1];

                Sonda sondaselecionada = sondas.Where(c => c.NomeSonda == nome)?.FirstOrDefault();

                if (sondaselecionada == null)
                {
                    Console.WriteLine("Sonda Não Encontrada !");
                    continue;
                }

                List <Comandos.Comando> comandosexecutados = new List <Comandos.Comando>();

                foreach (char movs in movimentos)
                {
                    switch (movs)
                    {
                    case 'M':
                        comandosexecutados.Add(Comandos.Comando.Avancar);
                        break;

                    case 'L':
                        comandosexecutados.Add(Comandos.Comando.Esquerda);
                        break;

                    case 'R':
                        comandosexecutados.Add(Comandos.Comando.Direita);
                        break;
                    }
                }

                sondaselecionada.Mover(comandosexecutados);
                Console.ForegroundColor = ConsoleColor.DarkGreen;
                Console.WriteLine(sondaselecionada.Status());
            }
        }
Exemple #10
0
        public void TestResetPositionResponseNotNull()
        {
            Sonda sonda = new Sonda();

            sonda.ResetPosition();

            string returnTest = HttpContext.Current.Response.Output.ToString();

            Assert.IsNotNull(returnTest);
        }
        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());
        }
Exemple #12
0
        public void Nao_deve_gravar_uma_sonda_com_dados_invalidos()
        {
            IMongoDatabase db     = new ProvedorDeAcesso().Criar(conexaoComOBanco);
            Sondas         sondas = new Sondas(db);

            sonda = new Sonda("Mark Ierro");

            sondas.Gravar(sonda);

            Assert.IsTrue(sonda.EspecificacaoDeNegocio.HouveViolacao());
        }
Exemple #13
0
        private Sonda ObterSonda(Sondas sondas, string nomeDaSonda)
        {
            Sonda sonda = sondas.ObterPorNome(nomeDaSonda);

            if (sonda == null)
            {
                sonda = new Sonda(especificacaoDeNegocio, nomeDaSonda);
            }

            return(sonda);
        }
Exemple #14
0
        private static Sonda ObterSonda(Sondas sondas, string nomeDaSonda)
        {
            Sonda sonda = sondas.ObterPorNome(nomeDaSonda);

            if (sonda == null)
            {
                sonda = new Sonda(nomeDaSonda);
            }

            return(sonda);
        }
        public void MoveSonda(string moves, string response)
        {
            // Arrange
            var sonda   = new Sonda();
            var service = new MoveSondaService();

            // Act
            var result = service.MoveSonda(sonda, moves);

            // Assert
            Assert.Equal(response, result.ToString());
        }
Exemple #16
0
        public void Iniciar()
        {
            var coordenada = new Coordenada(5, 5);

            planalto = new Planalto();
            planalto.Criar(coordenada);

            movimentoSempreParaFrente = new MovimentoParaFrente();

            sonda = new Sonda("Mark I");

            sonda.Explorar(planalto);
        }
Exemple #17
0
        public void Iniciar()
        {
            especificacaoDeNegocio = new EspecificacaoDeNegocio();
            corretorDaProximaPosicaoDoMovimento = new CorretorDaProximaPosicaoDoMovimento();
            movimentoSempreParaFrente           = new MovimentoParaFrente(corretorDaProximaPosicaoDoMovimento);

            var coordenada = new Coordenada(5, 5);
            var planalto   = new Planalto();

            planalto.Criar(coordenada);
            sonda = new Sonda(especificacaoDeNegocio, "Mark I");
            sonda.Explorar(planalto);
        }
        public void MoveSonda_Invalid(string moves, string response)
        {
            // Arrange
            var sonda   = new Sonda();
            var service = new MoveSondaService();
            var limit   = new Position();

            // Act
            var result = service.MoveSonda(sonda, moves, limit);

            // Assert
            Assert.Equal(response, result.ToString());
        }
Exemple #19
0
        public void TestSetPosition()
        {
            List <Object> movementsPerformed = new List <Object>();

            movementsPerformed.Add("girou para a esquerda");
            movementsPerformed.Add("se moveu 3 vez(es) no eixo X");
            movementsPerformed.Add("girou para a direita");
            movementsPerformed.Add("se moveu 2 vez(es) no eixo Y");

            List <Object> position = new List <Object>
            {
                new
                {
                    x = "3"
                },

                new
                {
                    y = "2"
                },

                new
                {
                    face = "D"
                },

                new
                {
                    movementsPerformed = movementsPerformed
                }
            };

            Object expectedReturnJSON = new
            {
                position
            };

            string expectedReturn = (new JavaScriptSerializer()).Serialize(expectedReturnJSON);

            Sonda sonda = new Sonda();

            sonda.SetPosition();

            string returnTest = HttpContext.Current.Response.Output.ToString();

            Assert.AreEqual(expectedReturn, returnTest);
        }
Exemple #20
0
        public void TestResetPosition()
        {
            Object expectedReturnJSON = new
            {
                message = "Posição da sonda reiniciada com sucesso!"
            };

            string expectedReturn = (new JavaScriptSerializer()).Serialize(expectedReturnJSON);

            Sonda sonda = new Sonda();

            sonda.ResetPosition();

            string returnTest = HttpContext.Current.Response.Output.ToString();

            Assert.AreEqual(expectedReturn, returnTest);
        }
        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));
        }
Exemple #22
0
        public void TestSetPositionInvalid()
        {
            TestSetupCoordinatesInvalid();

            Object expectedReturnJSON = new
            {
                error = "Um movimento inválido foi detectado, infelizmente a sonda ainda não possui a habilidade de voar."
            };

            string expectedReturn = (new JavaScriptSerializer()).Serialize(expectedReturnJSON);

            Sonda sonda = new Sonda();

            sonda.SetPosition();

            string returnTest = HttpContext.Current.Response.Output.ToString();

            Assert.AreEqual(expectedReturn, returnTest);
        }
Exemple #23
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);
        }
Exemple #24
0
 public void Gravar(Sonda sonda)
 {
     if (!sonda.MeusDadosSaoValidos())
     {
         try
         {
             if (NovaSonda(sonda))
             {
                 Todas().InsertOne(sonda);
             }
             else
             {
                 Expression <Func <Sonda, bool> > filter = x => x.Id.Equals(sonda.Id);
                 Todas().ReplaceOne(filter, sonda);
             }
         }
         catch (Exception)
         {
             throw;
         }
     }
 }
Exemple #25
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;
                }
            }
        }
Exemple #26
0
        public void Teste_L_M_L_M_L_M_L_M_M()
        {
            Sonda sonda = IniciarSonda();

            var posicaoInicial = new PosicaoXY(1, 2);
            var posicaoFinal   = new PosicaoXY(1, 3);

            sonda.IniciarPercurso(posicaoInicial, eDirecao.Norte);

            //L M L M L M L M M
            sonda.Virar(eDirecaoMovimento.Esquerda);
            sonda.Mover();
            sonda.Virar(eDirecaoMovimento.Esquerda);
            sonda.Mover();
            sonda.Virar(eDirecaoMovimento.Esquerda);
            sonda.Mover();
            sonda.Virar(eDirecaoMovimento.Esquerda);
            sonda.Mover();
            sonda.Mover();

            Assert.Equal(posicaoFinal, sonda.PosicaoAtual);
            Assert.Equal(eDirecao.Norte, sonda.DirecaoAtual);
        }
Exemple #27
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);
        }
Exemple #28
0
        public void Teste_M_M_R_M_M_R_M_R_R_M()
        {
            Sonda sonda = IniciarSonda();

            var posicaoInicial = new PosicaoXY(3, 3);
            var posicaoFinal   = new PosicaoXY(5, 1);

            sonda.IniciarPercurso(posicaoInicial, eDirecao.Leste);

            //M_M_R_M_M_R_M_R_R_M
            sonda.Mover();
            sonda.Mover();
            sonda.Virar(eDirecaoMovimento.Direita);
            sonda.Mover();
            sonda.Mover();
            sonda.Virar(eDirecaoMovimento.Direita);
            sonda.Mover();
            sonda.Virar(eDirecaoMovimento.Direita);
            sonda.Virar(eDirecaoMovimento.Direita);
            sonda.Mover();

            Assert.Equal(posicaoFinal, sonda.PosicaoAtual);
            Assert.Equal(eDirecao.Leste, sonda.DirecaoAtual);
        }
 void Sensor_Captured(object sender, Sonda.NET.SondaImage captureResult)
 {
     int x = 0;
     int y = 0;
     try
     {
         //Stopwatch sw = new Stopwatch();
         //sw.Start();
         // this hacky routine runs for around 1 ms - acceptable
         // completely based on ACD2 bitmap representation
         int rows = captureResult.Height;
         int columns = captureResult.Width;
         var src = captureResult.Array;
         float[] arr = new float[rows * columns];
         for (x = 0; x < columns; x++)
         {
             for (y = 0; y < rows; y++)
             {
                 arr[(rows-1-y)*columns + x] = 255.0f - src[y*columns + x + 1078];
             }
         }
         //sw.Stop();
         _processor.ProcessFingerImage(arr, rows, columns);
         
     }
     catch (Exception ex)
     {
         Trace.WriteLine(ex);
     }
     Open();
 }
Exemple #30
0
 private bool NovaSonda(Sonda sonda)
 {
     return(sonda.Id.ToString().Equals("00000000-0000-0000-0000-000000000000"));
 }
 public Posicao Executar(Sonda sonda)
 {
     return(_corretorDaProximaPosicaoDoMovimento.Executar(sonda.PosicaoAtual, sonda.DirecaoCardinalAtual));
 }