예제 #1
0
        public void TerminaPregao_RetornaMaiorValor_QuandoLeilaoComPeloMenosUmLance(double valorEsperado,
                                                                                    double[] lances)
        {
            // Arrange
            var modalidade = new MaiorValor();
            var leilao     = new Leilao("Pintura do Van Gogh", modalidade);
            var licitante1 = new Licitante("Licitante Um", leilao);
            var licitante2 = new Licitante("Licitante Dois", leilao);

            leilao.Iniciar();
            for (var i = 0; i < lances.Length; i++)
            {
                if (i % 2 == 0)
                {
                    leilao.ReceberLance(licitante1, lances[i]);
                    continue;
                }

                leilao.ReceberLance(licitante2, lances[i]);
            }

            leilao.Terminar();

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

            Assert.Equal(valorEsperado, valorRecebido);
        }
예제 #2
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);
        }
예제 #3
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);
        }
예제 #4
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);
        }
        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);
        }
예제 #6
0
        public void QuantidadeDeLancesPermaneceZeroDadoQuePregaoNaoFoiIniciado(double[] lances)
        {
            //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);

            //Act
            for (int i = 0; i < lances.Length; i++)
            {
                var valor = lances[i];

                if (i % 2 == 0)
                {
                    leilao.ReceberLance(clienteInteressado1, valor);
                }

                leilao.ReceberLance(clienteInteressado2, valor);
            }

            //Assert
            Assert.Empty(leilao.Lances);
        }
        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);
        }
        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);
        }
예제 #9
0
        public void ReceberLance_NaoPermiteNovoLance_QuandoOLicitanteTentaDarLancesConsecutivos()
        {
            // Arrange
            var modalidade = new MaiorValor();
            var leilao     = new Leilao("Pintura do Van Gogh", modalidade);
            var licitante  = new Licitante("Licitante Um", leilao);

            leilao.Iniciar();
            leilao.ReceberLance(licitante, 100);

            // Act
            leilao.ReceberLance(licitante, 5000);

            // Assert
            const int qtdEsperada = 1;
            var       qtdRecebida = leilao.Lances.Count();

            Assert.Equal(qtdEsperada, qtdRecebida);
        }
예제 #10
0
        public void NaoAceitaProximoLanceDadoSejaDoMesmoInteressado()
        {
            //Arrange
            IModalidadeLeilao modalidadeLeilao = new ModalidadeOfertaMaiorValor();
            var leilao      = new Leilao("peça leiloada", modalidadeLeilao);
            var interessado = new Interessada("pessoa interessada 1", leilao);

            leilao.IniciarPregao();

            leilao.ReceberLance(interessado, 100);

            //Act
            leilao.ReceberLance(interessado, 100);

            //Assert
            var esperado  = 1;
            var resultado = leilao.Lances.Count();

            Assert.Equal(esperado, resultado);
        }
        public void NaoAceitarProximoLanceDadoQueMesmoClienteRealizouUltimoLance()
        {
            // Arrange - Given
            // Dado o lielão iniciado e cliente x realizou o último lance
            var modalidade = new MaiorValor();
            var leilao = new Leilao("Van Gogh", modalidade);
            var fulano = new Cliente("Fulano", leilao);

            leilao.IniciarPregao();
            leilao.ReceberLance(fulano, 800);

            // Act - Then
            // Quando o mesmo cliente x realiza o próximo lance
            leilao.ReceberLance(fulano, 1000);

            // Assert - When
            // Então o leilão não aceita o segundo lance
            var quantidadeEsperada = 1;
            var quantidadeObtida = leilao.Lances.Count();
            Assert.Equal(quantidadeEsperada, quantidadeObtida);
        }
예제 #12
0
        public void Terminar_Retorna_ValorSuperiorMaisProximo_DadoLeilaoNessaModalidade()
        {
            // Arrange
            var modalidade = new OfertaSuperiorMaisProxima(150);
            var leilao     = new Leilao("Pintura do Van Gogh", modalidade);
            var licitante  = new Licitante("Licitante Um", leilao);
            var licitante2 = new Licitante("Licitante Dois", leilao);

            leilao.Iniciar();

            // Act
            leilao.ReceberLance(licitante, 100);
            leilao.ReceberLance(licitante2, 200);
            leilao.ReceberLance(licitante, 5000);
            leilao.Terminar();

            // Assert
            const double valorEsperado = 200;
            var          valorRecebido = leilao.Ganhador.Valor;

            Assert.Equal(valorEsperado, valorRecebido);
        }
예제 #13
0
        public void ReceberLance_NaoPermiteNovosLances_QuandoLeilaoFinalizado(double qtdEsperada, double[] lances)
        {
            // Arrange
            var modalidade = new MaiorValor();
            var leilao     = new Leilao("Pintura do Van Gogh", modalidade);
            var licitante1 = new Licitante("Licitante Um", leilao);
            var licitante2 = new Licitante("Licitante Dois", leilao);

            leilao.Iniciar();
            for (var i = 0; i < lances.Length; i++)
            {
                if (i % 2 == 0)
                {
                    leilao.ReceberLance(licitante1, lances[i]);
                    continue;
                }

                leilao.ReceberLance(licitante2, lances[i]);
            }

            leilao.Terminar();

            // Act

            if (lances.Length % 2 == 0)
            {
                leilao.ReceberLance(licitante1, 5000);
            }
            else
            {
                leilao.ReceberLance(licitante2, 5000);
            }

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

            Assert.Equal(qtdEsperada, qtdRecebida);
        }
예제 #14
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);
        }