コード例 #1
0
        public void RetornaMaiorValorDadoLeilaoComPeloMenosUmLanceE3Clientes(double valorEsperado)
        {
            //Arrange
            IModalidadeLeilao modalidadeLeilao = new ModalidadeOfertaMaiorValor();
            var leilao = new Leilao("peça leiloada", modalidadeLeilao);

            var clienteInteressado1 = new Interessada("cliente interessado 1", leilao);
            var clienteInteressado2 = new Interessada("cliente interessado 2", leilao);
            var clienteInteressado3 = new Interessada("cliente interessado 3", leilao);

            leilao.IniciarPregao();

            leilao.ReceberLance(clienteInteressado3, 1400);
            leilao.ReceberLance(clienteInteressado1, 100);
            leilao.ReceberLance(clienteInteressado2, 200);
            leilao.ReceberLance(clienteInteressado1, 1000);
            leilao.ReceberLance(clienteInteressado2, 950);

            //Act
            leilao.TerminarPregao();

            //Assert
            var resultado = leilao.Ganhador.Valor;

            Assert.Equal(valorEsperado, resultado);
            Assert.Equal(clienteInteressado3, leilao.Ganhador.Cliente);
        }
コード例 #2
0
        public void RetornarValorSuperiorMaisProximoDadoLeilaoNessaModalidade(double valorDestino, double valorEsperado, double[] lances)
        {
            //Arrange
            IModalidadeLeilao modalidadeLeilao = new ModalidadeOfertaSuperiorMaisProxima(valorDestino);

            var leilao = new Leilao("peca leiloada", modalidadeLeilao);

            var clienteInteressado1 = new Interessada("cliente interessado 1", leilao);
            var clienteInteressado2 = new Interessada("cliente interessado 2", leilao);

            leilao.IniciarPregao();

            for (int i = 0; i < lances.Length; i++)
            {
                if (i % 2 == 0)
                {
                    leilao.ReceberLance(clienteInteressado1, lances[i]);
                }
                else
                {
                    leilao.ReceberLance(clienteInteressado2, lances[i]);
                }
            }

            //Act
            leilao.TerminarPregao();

            //Assert
            var resultado = leilao.Ganhador.Valor;

            Assert.Equal(valorEsperado, resultado);
        }
コード例 #3
0
        public void RetornaValorSuperiorMaisProximoDadoLeilaoNessaModalidade(double valorDestino, double valorEsperado, double[] ofertas)
        {
            // Arrange - Given
            // Dado o leilão iniciado coma  modalidade de avaliação "valor superior mais próximo", valor de destino 1200 e lances de 800, 1150, 1400 e 1250
            IModalidadeAvaliacao modalidade = new OfertaSuperiorMaisProxima(valorDestino);

            var leilao = new Leilao("Van Gogh", modalidade);
            var fulano = new Cliente("Fulano", leilao);
            var maria  = new Cliente("Maria", leilao);

            leilao.IniciarPregao();

            for (int i = 0; i < ofertas.Length; i++)
            {
                if (i % 2 == 0)
                {
                    leilao.ReceberLance(fulano, ofertas[i]);
                }
                else
                {
                    leilao.ReceberLance(maria, ofertas[i]);
                }
            }

            // Act - Then
            // Quando o pregão termina
            leilao.TerminarPregao();

            // Assert - When
            // Então o ganhador será quem fez a oferta 1250
            Assert.Equal(valorEsperado, leilao.Ganhador.Valor);
        }
コード例 #4
0
        public void RetornarMaiorValorDadoLeilaoComPeloMenosUmLance(double valorEsperado, double[] ofertas)
        {
            // Arrange - Given
            // Dado o leilão com lances sem ordem de valor
            var modalidade = new MaiorValor();
            var leilao     = new Leilao("Van Gogh", modalidade);
            var fulano     = new Cliente("Fulano", leilao);
            var maria      = new Cliente("Maria", leilao);

            leilao.IniciarPregao();

            for (int i = 0; i < ofertas.Length; i++)
            {
                var valor = ofertas[i];
                if (i % 2 == 0)
                {
                    leilao.ReceberLance(fulano, valor);
                }
                else
                {
                    leilao.ReceberLance(maria, valor);
                }
            }

            // Act - Then
            // Quando o pregão termina
            leilao.TerminarPregao();

            // Assert - When
            // Então o valor esperado é o maior valor
            var valorObtido = leilao.Ganhador.Valor;

            Assert.Equal(valorEsperado, valorObtido);
        }
コード例 #5
0
        public void RetornaMaiorValorDadoLeilaoComPeloMenosUmLance(double valorEsperado, double[] lances)
        {
            //Arrange
            IModalidadeLeilao modalidadeLeilao = new ModalidadeOfertaMaiorValor();
            var leilao = new Leilao("peça leiloada", modalidadeLeilao);

            var clienteInteressado1 = new Interessada("cliente 1", leilao);
            var clienteInteressado2 = new Interessada("cliente 2", leilao);

            leilao.IniciarPregao();

            for (int i = 0; i < lances.Length; i++)
            {
                if (i % 2 == 0)
                {
                    leilao.ReceberLance(clienteInteressado1, lances[i]);
                }
                else
                {
                    leilao.ReceberLance(clienteInteressado2, lances[i]);
                }
            }

            //Act
            leilao.TerminarPregao();

            //Assert
            var resultado = leilao.Ganhador.Valor;

            Assert.Equal(valorEsperado, resultado);
        }
コード例 #6
0
        public void NaoPermiteNovosLancesDadoLeilaoFinalizado(int quantidadeEsperada, double[] ofertas)
        {
            // Arrange - Given
            // Dado leilão finalizado com x lances
            var modalidade = new MaiorValor();
            var leilao = new Leilao("Van Gogh", modalidade);
            var fulano = new Cliente("Fulano", leilao);
            var maria = new Cliente("Maria", leilao);

            leilao.IniciarPregao();

            for (int i = 0; i < ofertas.Length; i++)
            {
                var valor = ofertas[i];
                if (i % 2 == 0)
                {
                    leilao.ReceberLance(fulano, valor);
                }
                else
                {
                    leilao.ReceberLance(maria, valor);
                }
            }

            leilao.TerminarPregao();

            // Act - Then
            // Quando o leilão receber nova oferta de lance
            leilao.ReceberLance(fulano, 1000);

            // Assert - When
            // Então a quantidade de lances continua sendo x
            var quantidadeObtida = leilao.Lances.Count();
            Assert.Equal(quantidadeEsperada, quantidadeObtida);
        }
コード例 #7
0
        public void RotornaInvalidOperationExceptionDadoPregaoNaoIniciado()
        {
            // Arrange
            Leilao leilao = new Leilao("I Leilão Bothers Plus", 0, new Bem("Van Gogh", "Arte"));

            // Assert
            Assert.Throws<InvalidOperationException>(
                
                // Act
                () => leilao.TerminarPregao()
            );
        }
コード例 #8
0
        public void RetornaZeroDadoLeilaoSemLance()
        {
            //Arrange
            var leilao = new Leilao("Van gog");

            //Act
            leilao.TerminarPregao();

            //Assert
            double expected = 0;
            double result   = leilao.Ganhador.Valor;

            Assert.Equal(expected, result);
        }
コード例 #9
0
        private void RetornaZeroDadoUmLeilaoSemLance()
        {
            // Arrange (Preparação das variáveis necessárias)
            Leilao leilao = new Leilao("I Leilão Bothers Plus", 0, new Bem("Van Gogh", "Arte"));

            leilao.IniciarPregao(); 
            
            // Act (Efetivamente a função que desejo testar)
            leilao.TerminarPregao();

            // Assert (Confirmação dos dados)
            var valorObtido = leilao.Vencedor.Valor;
            Assert.Equal(0, valorObtido);
        }
コード例 #10
0
        public void LancaExceptionDadoPregaoNaoIniciado()
        {
            //Arrange
            IModalidadeLeilao modalidadeLeilao = new ModalidadeOfertaMaiorValor();
            var leilao = new Leilao("peça leiloada", modalidadeLeilao);

            //Assert
            var excecaoCapturada = Assert.Throws <InvalidOperationException>(
                //Act
                () => leilao.TerminarPregao()
                );

            //Assert
            var esperado = "Não é possível terminar o leilão sem ter iniciado.";

            Assert.Equal(esperado, excecaoCapturada.Message);
        }
コード例 #11
0
        public void RetornaZeroDadoLeilaoSemLances()
        {
            //Arrange
            IModalidadeLeilao modalidadeLeilao = new ModalidadeOfertaMaiorValor();
            var leilao = new Leilao("peça leiloada", modalidadeLeilao);

            leilao.IniciarPregao();

            //Act
            leilao.TerminarPregao();

            //Assert
            var esperado  = 0;
            var resultado = leilao.Ganhador.Valor;

            Assert.Equal(esperado, resultado);
        }
コード例 #12
0
        public void LancaInvalidOperationExceptionDadoPregaoNaoIniciado()
        {
            // Arrange - Given
            // Dado o leilão
            var modalidade = new MaiorValor();
            var leilao     = new Leilao("Van Gogh", modalidade);

            // Assert
            var exceptionObtida = Assert.Throws <InvalidOperationException>(
                // Act - Then
                // Quando o pregão termina
                () => leilao.TerminarPregao()
                );

            var msgEsperada = "Não é possível terminar o pregão sem que ele tenha começado.Para isso, utilize o método IniciarPregao()";

            Assert.Equal(msgEsperada, exceptionObtida.Message);
        }
コード例 #13
0
        private void RetornaValorSuperiorMaisProx(double valorEsperado, double valorBase, double[] ofertas)
        {
            // Arrange (Preparação das variáveis necessárias)
            Leilao leilao = new Leilao("I Leilão Bothers Plus", valorBase, new Bem("Van Gogh", "Arte"));
            Cliente samuel = new Cliente("Samuel Camilo", leilao);

            leilao.IniciarPregao();

            foreach(var oferta in ofertas)
                leilao.RecebeLance(samuel, oferta);

            // Act (Efetivamente a função que desejo testar)
            leilao.TerminarPregao();

            // Assert (Confirmação dos dados)
            var valorObtido = leilao.Vencedor.Valor;
            Assert.Equal(valorEsperado, valorObtido);
        }
コード例 #14
0
        public void RetornarZeroDadoLeilaoSemLances()
        {
            // Arrange - Given
            // Dado o leilão sem nenhum lance
            var modalidade = new MaiorValor();
            var leilao     = new Leilao("Van Gogh", modalidade);

            leilao.IniciarPregao();

            // Act - Then
            // Quando o pregão termina
            leilao.TerminarPregao();

            // Assert - When
            // Então o valor do lance ganhador é zero
            var valorEsperado = 0;
            var valorObtido   = leilao.Ganhador.Valor;

            Assert.Equal(valorEsperado, valorObtido);
        }
コード例 #15
0
        public void RetornaMaiorValorDoLeilaoComPeloMenosUmLance(double valoresperado, double[] ofertas)
        {
            //Arrange
            var leilao = new Leilao("Van gog");
            var flano  = new Interessada("Flano", leilao);

            foreach (var valor in ofertas)
            {
                leilao.RecebeLance(flano, valor);
            }

            //Act
            leilao.TerminarPregao();

            //Assert
            double expected = valoresperado;
            double result   = leilao.Ganhador.Valor;

            Assert.Equal(expected, result);
        }
コード例 #16
0
        private void NaoPermiteNovosLancesDadoLeilaoFinalizado()
        {
            // Arrange (Preparação das variáveis necessárias)
            Leilao  leilao = new Leilao("I Leilão Bothers Plus", 0, new Bem("Van Gogh", "Arte"));
            Cliente samuel = new Cliente("Samuel", leilao);

            leilao.IniciarPregao();

            leilao.RecebeLance(samuel, 100);
            leilao.RecebeLance(samuel, 1000);
            leilao.RecebeLance(samuel, 75);
            leilao.RecebeLance(samuel, 30);
            // Act (Efetivamente a função que desejo testar)
            leilao.TerminarPregao();

            leilao.RecebeLance(samuel, 75);
            leilao.RecebeLance(samuel, 30);

            // Assert (Confirmação dos dados)
            var valorObtido = leilao.Lances.Count();

            Assert.Equal(4, valorObtido);
        }
コード例 #17
0
        public void NaoPermiteNovosLancesDadoLeilaoFinalizado()
        {
            //Arrange
            IModalidadeLeilao modalidadeLeilao = new ModalidadeOfertaMaiorValor();
            var leilao = new Leilao("peça leiloada", modalidadeLeilao);

            var clienteInteressado1 = new Interessada("pessoa interessada 1", leilao);
            var clienteInteressado2 = new Interessada("pessoa interessada 2", leilao);

            leilao.IniciarPregao();

            leilao.ReceberLance(clienteInteressado1, 100);
            leilao.ReceberLance(clienteInteressado2, 200);

            leilao.TerminarPregao();

            //Act
            leilao.ReceberLance(clienteInteressado1, 300);

            //Assert
            var valorObtido = leilao.Lances.Count();

            Assert.Equal(2, valorObtido);
        }