public void NaoDeveAvaliarLeiloesSemNenhumLanceDado()
        {
            Leilao leilao = new CriadorLeilao().Para("Playstation 3 Novo").Constroi();

            Assert.That(() => leiloeiro.Avalia(leilao),
                        Throws.TypeOf <Exception>());
        }
        public void DeveEncontrarOsTresMaioresLancesComNenhumItem()
        {
            Leilao leilao = new CriadorLeilao().Para("Playstation 3 Novo").Constroi();

            leiloeiro.Avalia(leilao);

            IList <Lance> maiores = leiloeiro.TresMaiores;

            Assert.AreEqual(0, maiores.Count);
        }
        public void DeveEntenderLeilaoComApenasUmLance()
        {
            Leilao leilao = new CriadorLeilao().Para("Playstation 3 Novo")
                            .Lance(joao, 200.0)
                            .Constroi();

            leiloeiro.Avalia(leilao);

            Assert.AreEqual(200, leiloeiro.MaiorLance, 0.0001);
            Assert.AreEqual(200, leiloeiro.MenorLance, 0.0001);
        }
        public void DeveEntenderLancesEmOrdemCrescenteComOutrosValores()
        {
            Leilao leilao = new CriadorLeilao().Para("Playstation 3 Novo")
                            .Lance(maria, 1000.0)
                            .Lance(joao, 2000.0)
                            .Lance(jose, 3000.0)
                            .Constroi();



            leiloeiro.Avalia(leilao);

            Assert.AreEqual(3000, leiloeiro.MaiorLance, 0.0001);
            Assert.AreEqual(1000, leiloeiro.MenorLance, 0.0001);
        }
        public void DeveEntenderLancesEmOrdemCrescente()
        {
            Leilao leilao = new CriadorLeilao().Para("Playstation 3 Novo")
                            .Lance(maria, 250.0)
                            .Lance(joao, 300.0)
                            .Lance(jose, 400.0)
                            .Constroi();


            leiloeiro.Avalia(leilao);

            double maiorEsperado = 400;
            double menorEsperado = 250;

            Assert.AreEqual(maiorEsperado, leiloeiro.MaiorLance);
            Assert.AreEqual(menorEsperado, leiloeiro.MenorLance);
        }
        public void DeveEncontrarOsTresMaioresLancesComdoisItens()
        {
            Leilao leilao = new CriadorLeilao().Para("Playstation 3 Novo")
                            .Lance(joao, 200.0)
                            .Lance(maria, 100.0)
                            .Constroi();



            leiloeiro.Avalia(leilao);

            IList <Lance> maiores = leiloeiro.TresMaiores;

            Assert.AreEqual(2, maiores.Count);
            Assert.AreEqual(200, maiores[0].Valor, 0.00001);
            Assert.AreEqual(100, maiores[1].Valor, 0.00001);
        }
        public void DeveEntenderLancesEmOrdemAleatoria()
        {
            Leilao leilao = new CriadorLeilao().Para("Playstation 3 Novo")
                            .Lance(maria, 200.0)
                            .Lance(joao, 450.0)
                            .Lance(maria, 120.0)
                            .Lance(joao, 700.0)
                            .Lance(maria, 630.0)
                            .Lance(joao, 230.0)
                            .Constroi();



            leiloeiro.Avalia(leilao);
            double maiorEsperado = 700;
            double menorEsperado = 120;

            Assert.AreEqual(maiorEsperado, leiloeiro.MaiorLance);
            Assert.AreEqual(menorEsperado, leiloeiro.MenorLance);
        }