public void testar_saque()
        {
            var conta = new ContaCorrente();
            conta.Credita(1000);
            conta.Numero = 123;

            TransacaoBancaria saque = new Saque(conta, 500);
            saque.Executa();

            Comprovante comprovante = saque.Comprovante;

            RepositorioTransacaoBancaria.LimparRepositorio();

            RepositorioTransacaoBancaria.Adicionar(saque);

            Assert.Contains(saque, RepositorioTransacaoBancaria.Listar());

            Saque recuperado = RepositorioTransacaoBancaria.Listar().Cast<Saque>().FirstOrDefault();

            List<Saque> saques = RepositorioTransacaoBancaria.Listar()
                .Where(t => t.GetType().Name == typeof(Saque).Name)
                .Cast<Saque>()
                .ToList();

            Assert.AreEqual(saque, recuperado);
        }
 public void Executar()
 {
     if (_conta.Status != "Bloqueado" && _conta.Saldo >= _valor)
     {
         TransacaoBancaria saque = new Saque(_conta, _valor);
         saque.Executa();
         RepositorioTransacaoBancaria.Adicionar(saque);
     }
 }
        public void Saque(ContaCorrente contaOrigem, decimal valor)
        {
            if (contaOrigem.Status.Equals(ContaCorrente.StatusConta.Ativa.ToString()))
            {
                TransacaoBancaria transacao = new Saque(contaOrigem, valor);

                ValidaSaldo(contaOrigem, valor, "Saque");

                transacao.Executa();
            }
            else
            {
                throw new Exception("Conta não está ativa");
            }
        }
 public static void Adicionar(Saque saque)
 {
     saques.Add(saque);
 }