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); }
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; } }
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(); }
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); }
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()); } }
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()); }
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()); }
private Sonda ObterSonda(Sondas sondas, string nomeDaSonda) { Sonda sonda = sondas.ObterPorNome(nomeDaSonda); if (sonda == null) { sonda = new Sonda(especificacaoDeNegocio, nomeDaSonda); } return(sonda); }
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()); }
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); }
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()); }
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); }
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)); }
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); }
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); }
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; } } }
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; } } }
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); }
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); }
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(); }
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)); }