public void MaximoCincoLancePorUsuario()
        {

            var leilao = new Leilao("Yamaha Fazer 250");

            var tiao = new Usuario("Sebastiao");
            var tiago = new Usuario("Tiago");

            leilao.Propoe(new Lance(tiao, 1500));
            leilao.Propoe(new Lance(tiago, 2000));

            leilao.Propoe(new Lance(tiao, 2500));
            leilao.Propoe(new Lance(tiago, 3000));

            leilao.Propoe(new Lance(tiao, 3500));
            leilao.Propoe(new Lance(tiago, 4000));

            leilao.Propoe(new Lance(tiao, 4500));
            leilao.Propoe(new Lance(tiago, 5000));

            leilao.Propoe(new Lance(tiao, 5500));
            leilao.Propoe(new Lance(tiago, 6000));

            leilao.Propoe(new Lance(tiao, 5500));


            Assert.AreEqual(10, leilao.Lances.Count);
            Assert.AreEqual(tiago,leilao.Lances[leilao.Lances.Count-1].Usuario);
        }
        public void DobraLance(Usuario usuario)
        {
            var ultimoLance = UltimoLanceUsuario(usuario).GetValueOrDefault(0d);

            if (ultimoLance > 0d)
            {
                this.Propoe(new Lance(usuario, ultimoLance * 2));
            }
            
        }
        public int TotalLances(Usuario usuario)
        {
            var total = 0;

            foreach (var l in Lances)
            {
                if (l.Usuario.Equals(usuario))
                {
                    total++;
                }
            }
            return total;
        }
        public void DeveReceberUmLance()
        {
            Leilao leilao = new Leilao("Motocicleta 150 cc");
            var usuario = new Usuario("Cesar");
                
            //validada se nenhum lance foi dado.
            Assert.AreEqual(0, leilao.Lances.Count);

            leilao.Propoe(new Lance(usuario, 1000d));

            //validade o teste com quantidade de lance e o valor que deve ser encontrado no lance único.
            Assert.AreEqual(1, leilao.Lances.Count);
            Assert.AreEqual(1000d, leilao.Lances[0].ValorLance);
        }
        public void DeveSelecionarLancesEntre500E700()
        {
            Usuario joao = new Usuario("Joao");

            FiltroDeLances filtro = new FiltroDeLances();
            IList<Lance> resultado = filtro.Filtra(new List<Lance>() {
            new Lance(joao,600),
            new Lance(joao,500),
            new Lance(joao,700),
            new Lance(joao, 800)});

            Assert.AreEqual(1, resultado.Count);
            Assert.AreEqual(600, resultado[0].ValorLance, 0.00001);
        }
        public void NaoPodeTerDoisLancesSeguidosDoMesmoUSuario()
        {
            var leilao = new Leilao("Yamaha Fazer 250");

            var tiao = new Usuario("Sebastiao");
            var tiago = new Usuario("Tiago");

            leilao.Propoe(new Lance(tiao,1500));
            leilao.Propoe(new Lance(tiago, 2000));
            leilao.Propoe(new Lance(tiago, 3000));

            Assert.AreEqual(1, leilao.Lances.Count);
            Assert.AreEqual(3000, leilao.Lances[leilao.Lances.Count - 1].ValorLance);

        }
        public double? UltimoLanceUsuario(Usuario usuario)
        {
            var lancesUsuario = from l in Lances
                                where l.Usuario.Equals(usuario)
                                select l;


            var lancesFiltrados = lancesUsuario.ToList<Lance>();

            if (lancesFiltrados.Count > 0)
            {
                return lancesFiltrados[lancesFiltrados.Count - 1].ValorLance;
            }

            return null;
        }
        public void DeveSelecionarLancesMenores500()
        {
            Usuario joao = new Usuario("Joao");

            FiltroDeLances filtro = new FiltroDeLances();
            IList<Lance> resultado = filtro.Filtra(new List<Lance>() {
            new Lance(joao,200),
            new Lance(joao,400),
            new Lance(joao,300),
            new Lance(joao,150)});

            resultado = resultado.OrderBy(l => l.ValorLance).ToList();

            Assert.AreEqual(4, resultado.Count);
            Assert.AreEqual(150, resultado[0].ValorLance, 0.00001);
        }
        public void DeveSelecionarLancesMaior5000()
        {
            Usuario joao = new Usuario("Joao");

            FiltroDeLances filtro = new FiltroDeLances();
            IList<Lance> resultado = filtro.Filtra(new List<Lance>() {
            new Lance(joao,6000),
            new Lance(joao,5005),
            new Lance(joao,7050),
            new Lance(joao, 800)});

            resultado = resultado.OrderByDescending(l => l.ValorLance).ToList() ;

            Assert.AreEqual(3, resultado.Count);
            Assert.AreEqual(7050, resultado[0].ValorLance, 0.00001);
        }
        public void DeveReceberVariosLances()
        {
            var leilao = new Leilao("Play Station 3 Novo");

            var leonardo = new Usuario("Leonardo");
            var leandro = new Usuario("Leandro");

            leilao.Propoe(new Lance(leonardo, 1500));
            leilao.Propoe(new Lance(leandro, 2000));
            leilao.Propoe(new Lance(leonardo, 3000));
            leilao.Propoe(new Lance(leandro, 3600));

            Assert.AreEqual(4,leilao.Lances.Count);
            Assert.AreEqual(1500, leilao.Lances[0].ValorLance);
            Assert.AreEqual(3600, leilao.Lances[3].ValorLance);

        }
 public CriadorDeLeiloes Lance(Usuario usuario, double valor)
 {
     this.leilao.Propoe(new TesteApplication.Lance(usuario, valor));
     return this;
 }
        public void MaximoCincoLancePorUsuarioDobraLance()
        {

            var leilao = new Leilao("Yamaha Fazer 250");

            var tiao = new Usuario("Sebastiao");
            var tiago = new Usuario("Tiago");

            leilao.Propoe(new Lance(tiao, 1000));
            leilao.Propoe(new Lance(tiago, 1100));

            leilao.DobraLance(tiao);
            leilao.DobraLance(tiago);
            leilao.DobraLance(tiao);
            leilao.DobraLance(tiago);
            leilao.DobraLance(tiao);
            leilao.DobraLance(tiago);
            leilao.DobraLance(tiao);
            leilao.DobraLance(tiago);
            leilao.DobraLance(tiao);
            leilao.DobraLance(tiago);

            Assert.AreEqual(10, leilao.Lances.Count);
            Assert.AreEqual(tiago, leilao.Lances[leilao.Lances.Count - 1].Usuario);
            Assert.AreEqual(17600d, leilao.Lances[leilao.Lances.Count - 1].ValorLance);
        }
        public void NaoDeveDobrarCasoNaoHajaLanceAnterior()
        {
            Leilao leilao = new Leilao("Macbook Pro 15");
            Usuario steveJobs = new Usuario("Steve Jobs");

            leilao.DobraLance(steveJobs);

            Assert.AreEqual(0, leilao.Lances.Count);
        }
示例#14
0
 public bool PodeDarLance(Usuario usuario)
 {
     return Lances.Count == 0 || (!UsuarioUltimoLance().Equals(usuario)) && (TotalLances(usuario) < 5);
 }