public void ValidarInputUsuarioComoInteiro_PassandoStringComNumeroInteiro_DeveRetornarVerdadeiro()
        {
            //Arrange
            var stringTeste = "489498";

            //Act
            var resultado = _validadorInputUsuario.ValidarInputUsuarioComoInteiro(stringTeste);

            //Assert
            resultado.Should().BeTrue();
        }
Exemplo n.º 2
0
        public void IniciaJogo()
        {
            bool   inputInvalido = true;
            string inputQuantidadeJogos = "0";
            string inputNMX = "", inputPilhaA = "", inputPilhaB = "";

            int quantidadeJogos = 0;
            int tamanhoPilhaA   = 0;
            int tamanhoPilhaB   = 0;
            int valorMaximo     = 0;

            while (inputInvalido)
            {
                Console.WriteLine("Digite quantos jogos quer realizar:");
                inputQuantidadeJogos = Console.ReadLine();
                inputInvalido        = !_validadorInputUsuario.ValidarInputUsuarioComoInteiro(inputQuantidadeJogos);
                if (inputInvalido)
                {
                    MensagemInputInvalido();
                }
                else
                {
                    quantidadeJogos = Convert.ToInt32(inputQuantidadeJogos);
                    if (quantidadeJogos > _regras.NumeroMaximoPartidas())
                    {
                        inputInvalido = true;
                        MensagemInputInvalido($"Número máximo[{_regras.NumeroMaximoPartidas()}] de partidas excedido.");
                    }
                }
            }


            for (int rodada = 0; rodada < quantidadeJogos; rodada++)
            {
                var valoresNMX = new int[3];
                inputInvalido = true;
                while (inputInvalido)
                {
                    Console.WriteLine("Digite a quantidade de números(N), números(M) e o valor máximo(X). [Ex.: 4 5 10]: ");
                    inputNMX      = Console.ReadLine();
                    inputInvalido = !_validadorInputUsuario.ValidarInputUsuarioComoVetorInteiro(inputNMX, 3, out valoresNMX);
                    if (inputInvalido)
                    {
                        MensagemInputInvalido();
                    }
                    else
                    {
                        tamanhoPilhaA = valoresNMX[0];
                        tamanhoPilhaB = valoresNMX[1];
                        valorMaximo   = valoresNMX[2];

                        var(minLimite, maxLimite) = _regras.ValorMinMaxLimite();
                        if (valorMaximo < minLimite || valorMaximo > maxLimite)
                        {
                            inputInvalido = true;
                            MensagemInputInvalido($"Valor máximo está fora do padrão. Min={minLimite}, Max={maxLimite}");
                        }

                        var(minTamanhoPilha, maxTamanhoPilha) = _regras.TamanhoMinMaxPilha();
                        if (tamanhoPilhaA < minTamanhoPilha || tamanhoPilhaA > maxTamanhoPilha || tamanhoPilhaB < minTamanhoPilha || tamanhoPilhaB > maxTamanhoPilha)
                        {
                            inputInvalido = true;
                            MensagemInputInvalido($"Tamanho dos Números estão fora do padrão. Min={minTamanhoPilha}, Max={maxTamanhoPilha}");
                        }
                    }
                }

                var valoresPilhaA = new int[tamanhoPilhaA];
                inputInvalido = true;
                while (inputInvalido)
                {
                    Console.WriteLine($"Digite os {tamanhoPilhaA} números correspondentes a Pilha A: ");
                    inputPilhaA   = Console.ReadLine();
                    inputInvalido = !_validadorInputUsuario.ValidarInputUsuarioComoVetorInteiro(inputPilhaA, tamanhoPilhaA, out valoresPilhaA);
                    if (inputInvalido)
                    {
                        MensagemInputInvalido();
                    }
                    else
                    {
                        if (valoresPilhaA.Any(vpa => vpa < _regras.ValorMinMaxDadosPilha().Item1 || vpa > _regras.ValorMinMaxDadosPilha().Item2))
                        {
                            inputInvalido = true;
                            MensagemInputInvalido($"Números da pilha A estão fora do padrão. Min={_regras.ValorMinMaxDadosPilha().Item1}, Max={_regras.ValorMinMaxDadosPilha().Item2}");
                        }
                    }
                }

                var valoresPilhaB = new int[tamanhoPilhaB];
                inputInvalido = true;
                while (inputInvalido)
                {
                    Console.WriteLine($"Digite os {tamanhoPilhaB} números correspondentes a Pilha B: ");
                    inputPilhaB   = Console.ReadLine();
                    inputInvalido = !_validadorInputUsuario.ValidarInputUsuarioComoVetorInteiro(inputPilhaB, tamanhoPilhaB, out valoresPilhaB);
                    if (inputInvalido)
                    {
                        MensagemInputInvalido();
                    }
                    else
                    {
                        if (valoresPilhaB.Any(vpa => vpa < _regras.ValorMinMaxDadosPilha().Item1 || vpa > _regras.ValorMinMaxDadosPilha().Item2))
                        {
                            inputInvalido = true;
                            MensagemInputInvalido($"Números da pilha B estão fora do padrão. Min={_regras.ValorMinMaxDadosPilha().Item1}, Max={_regras.ValorMinMaxDadosPilha().Item2}");
                        }
                    }
                }

                try
                {
                    Console.WriteLine($"Resultado do jogo(Score Máximo): {_calculadoraFila.CalcularMaiorScoreDesempilhando(valorMaximo, valoresPilhaA, valoresPilhaB)}");
                    Console.WriteLine("-----------------");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Falha ao calcular maior Score." + Environment.NewLine + ex.Message);
                    rodada = quantidadeJogos;
                }
            }
        }