Ejemplo n.º 1
0
        public void ColocaStatusComoLeilaoEmAndamento()
        {
            var leilao = new Core.Leilao("Peça qualquer");

            leilao.Inicia();
            Assert.Equal(StatusLeilao.LeilaoEmAndamento, leilao.Status);
        }
        public void GanhadorEhOValorSuperioMaisProximoDadoLeilaoNessaModalidade(double valorDefinido, double valorEsperado, double[] lances)
        {
            //Arange
            IModalidadeLeilao modalidade = new ModalidadeSuperiorMaisProximo(valorDefinido);
            var leilao = new Core.Leilao("Van Gogh", modalidade);
            var joao   = new Interessada("João", leilao);
            var maria  = new Interessada("Maria", leilao);

            leilao.IniciaPregao();

            for (int i = 0; i < lances.Length; i++)
            {
                if (i % 2 == 0)
                {
                    leilao.RecebeLance(joao, lances[i]);
                }
                else
                {
                    leilao.RecebeLance(maria, lances[i]);
                }
            }

            //Act
            leilao.TerminaPregao();


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

            Assert.Equal(valorEsperado, retorno);
        }
        public void LeilaoComLancesRetornaOMaiorLance(double[] lances, double valorEsperado)
        {
            //Arange
            IModalidadeLeilao modalidade = new ModalidadeMaiorValor();
            var leilao = new Core.Leilao("Van Gogh", modalidade);
            var joao   = new Interessada("João", leilao);
            var maria  = new Interessada("Maria", leilao);

            leilao.IniciaPregao();

            for (int i = 0; i < lances.Length; i++)
            {
                if (i % 2 == 0)
                {
                    leilao.RecebeLance(joao, lances[i]);
                }
                else
                {
                    leilao.RecebeLance(maria, lances[i]);
                }
            }

            //Act
            leilao.TerminaPregao();


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

            Assert.Equal(valorEsperado, retorno);
        }
        public void LeilaoFinalizadoNaoPermiteNovosLances(int qtdEsperada, double[] lances)
        {
            //Arange
            IModalidadeLeilao modalidade = new ModalidadeMaiorValor();
            var leilao = new Core.Leilao("Van Gogh", modalidade);
            var joao   = new Interessada("João", leilao);
            var maria  = new Interessada("Maria", leilao);

            leilao.IniciaPregao();

            for (int i = 0; i < lances.Length; i++)
            {
                if (i % 2 == 0)
                {
                    leilao.RecebeLance(joao, lances[i]);
                }
                else
                {
                    leilao.RecebeLance(maria, lances[i]);
                }
            }

            leilao.TerminaPregao();

            //Act
            leilao.RecebeLance(joao, 1000);

            var qtdObitida = leilao.Lances.Count();

            //Assert
            Assert.Equal(qtdEsperada, qtdObitida);
        }
Ejemplo n.º 5
0
        public void AntesDeInvocadoNaoPermiteLances()
        {
            var leilao = new Core.Leilao("Peça qualquer");
            var joao   = new Interessado("Fulano de tal", leilao);

            leilao.RecebeOferta(new Lance(joao, 901));
            leilao.RecebeOferta(new Lance(joao, 1349));
            Assert.Equal(0, leilao.Lances.Count);
        }
Ejemplo n.º 6
0
        public void RetornaResultadoNaoNulo()
        {
            var leilao = new Core.Leilao("Peça qualquer");

            leilao.Inicia();
            var resultado = leilao.Termina();

            Assert.NotNull(resultado);
        }
Ejemplo n.º 7
0
        public void DepoisDeInvocadoNaoPermiteNovosLances()
        {
            var leilao = new Core.Leilao("Peça qualquer");

            leilao.Inicia();
            var resultado = leilao.Termina();

            new Interessado("Fulano", leilao).Oferece(250);
            Assert.Equal(0, leilao.Lances.Count);
        }
Ejemplo n.º 8
0
        public void DepoisDeInvocadoAceitaLances()
        {
            var leilao = new Core.Leilao("Peça qualquer");
            var joao   = new Interessado("Fulano de tal", leilao);
            var maria  = new Interessado("Maria", leilao);

            leilao.Inicia();
            leilao.RecebeOferta(new Lance(joao, 901));
            leilao.RecebeOferta(new Lance(maria, 1349));
            Assert.Equal(2, leilao.Lances.Count);
        }
Ejemplo n.º 9
0
        public void NaoPermiteLancesConsecutivosDoMesmoCliente()
        {
            var leilao = new Core.Leilao("Peça qualquer");
            var joao   = new Interessado("João", leilao);

            leilao.Inicia();
            leilao.RecebeOferta(new Lance(joao, 180));
            leilao.RecebeOferta(new Lance(joao, 200));
            Assert.Equal(1, leilao.Lances.Count);
            Assert.Equal(180, leilao.Lances[0].Valor);
        }
Ejemplo n.º 10
0
        public void DadoLeilaoAntesPregaoDeveLancarInvalidOperationException()
        {
            var leilao           = new Core.Leilao("Peça qualquer");
            var excecaoRetornada = Assert
                                   .Throws <InvalidOperationException>(() => leilao.Termina());
            var mensagemEsperada = "Leilão não pode ser finalizado antes do pregão começar.";

            Assert.Equal(
                mensagemEsperada,
                excecaoRetornada.Message
                );
        }
        public void LeilaoNaoIniciadoLancaInvalidOperationException()
        {
            IModalidadeLeilao modalidade = new ModalidadeMaiorValor();
            var leilao = new Core.Leilao("Van Gogh", modalidade);
            //Act

            var excecaoObtida = Assert.Throws <InvalidOperationException>(
                () =>
                leilao.TerminaPregao()
                );
            var mensagem = "Leilão não iniciado não pode ser terminado.";

            //Assert
            Assert.Equal(mensagem, excecaoObtida.Message);
        }
        public void LeilaoSemLancesRetornaZero()
        {
            IModalidadeLeilao modalidade = new ModalidadeMaiorValor();
            var leilao = new Core.Leilao("Van Gogh", modalidade);

            leilao.IniciaPregao();

            //Act
            leilao.TerminaPregao();


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

            Assert.Equal(esperado, retorno);
        }
Ejemplo n.º 13
0
        public void RetornaMaiorOferta(
            double maiorLanceEsperado,
            double[] ofertas)
        {
            var leilao = new Core.Leilao("Pintura de Dalí");

            leilao.Inicia();
            foreach (var oferta in ofertas)
            {
                leilao.RecebeOferta(
                    new Lance(new Interessado("Fulano", leilao), oferta)
                    );
            }

            var resultado = leilao.Termina();

            Assert.Equal(maiorLanceEsperado, resultado.MelhorLance.Valor);
        }
Ejemplo n.º 14
0
        public void NaoPermiteLancesMenoresDoMesmoCliente()
        {
            var leilao = new Core.Leilao("Peça qualquer");
            var joao   = new Interessado("João", leilao);
            var maria  = new Interessado("Maria", leilao);

            leilao.Inicia();
            leilao.RecebeOferta(new Lance(joao, 180));
            leilao.RecebeOferta(new Lance(maria, 200));
            leilao.RecebeOferta(new Lance(joao, 170));
            Assert.Equal(2, leilao.Lances.Count);
            var valorLanceJoao = leilao.Lances
                                 .Where(l => l.Cliente == joao)
                                 .Select(l => l.Valor)
                                 .First();

            Assert.Equal(180, valorLanceJoao);
        }
Ejemplo n.º 15
0
        public void RetornaOfertaSuperiorMaisProxima(
            double valorEsperado,
            double valorDestino,
            double[] ofertas)
        {
            var leilao = new Core.Leilao("Peça qualquer", new OfertaSuperiorMaisProxima(valorDestino));

            leilao.Inicia();
            foreach (var oferta in ofertas)
            {
                var interessado = new Interessado("Fulano", leilao);
                var lance       = new Lance(interessado, oferta);
                leilao.RecebeOferta(lance);
            }

            var resultado = leilao.Termina();

            Assert.Equal(valorEsperado, resultado.MelhorLance.Valor);
        }
        public void LancesConsecutivosDoMesmoInteressadoAceitaApenasOPrimeiro()
        {
            //Arange
            IModalidadeLeilao modalidade = new ModalidadeMaiorValor();
            var leilao = new Core.Leilao("Van Gogh", modalidade);
            var joao   = new Interessada("João", leilao);

            leilao.IniciaPregao();

            leilao.RecebeLance(joao, 1000);

            //Act
            leilao.RecebeLance(joao, 1200);

            //Assert
            leilao.TerminaPregao();
            var qtdObitida  = leilao.Lances.Count();
            var qtdEsperada = 1;

            Assert.Equal(qtdEsperada, qtdObitida);
        }