Example #1
0
        public void EfetuarOperacoesTeste()
        {
            var conta = new ContaEspecial()
            {
                Limite = 1000
            };

            conta.EfetuarOperacao(50m, Operacao.Deposito);
            Assert.IsTrue(conta.Saldo == 50m);

            conta.EfetuarOperacao(20m, Operacao.Saque);
            Assert.IsTrue(conta.Saldo == 30m);

            conta.EfetuarOperacao(40m, Operacao.Saque);
            Assert.IsTrue(conta.Saldo == -10m);

            conta.EfetuarOperacao(990m, Operacao.Saque);
            Assert.IsTrue(conta.Saldo == -1000m);

            try
            {
                conta.EfetuarOperacao(10m, Operacao.Saque);
                Assert.IsTrue(conta.Saldo == -1000m);
            }
            catch (Exception ex)
            {
                Assert.IsInstanceOfType(ex, typeof(SaldoInsuficienteException));
            }

            conta.EfetuarOperacao(1000m, Operacao.Deposito);
            Assert.IsTrue(conta.Saldo == 0m);

            Assert.AreEqual(conta.Movimentos.Count, 5);

            var depositos = conta.Movimentos.Where(m => m.Operacao == Operacao.Deposito).Sum(m => m.Valor);
            var saques    = conta.Movimentos.Where(m => m.Operacao == Operacao.Saque).Sum(m => m.Valor);

            Assert.AreEqual(conta.Saldo, depositos - saques);
        }