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);
        }
        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);
        }
        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);
        }