public void TakeMoneyFromBankAccount_WhenMoneyIsLessThanZero_ShouldThrowArgumentOutOfRange()
        {
            // arrange
            decimal      beginningBalance           = 11.99M;
            decimal      moneyToTakeFromBankAccount = -20.0M;
            BankRekening bankRekening = new BankRekening(beginningBalance);

            // act
            bankRekening.TakeMoneyFromBankAccount(moneyToTakeFromBankAccount);

            // assert is handled by ExcpectedException attribute
        }
        public void TakeMoneyFromBankAccount_WhenMoneyIsLessThanZero_ShouldThrowArgumentOutOfRange()
        {
            //Arrange
            decimal      beginningBalance           = 12.00m;
            decimal      moneyToTakeFrombankAccount = -20.00m;
            BankRekening bankRekening = new BankRekening(beginningBalance);

            //Act
            bankRekening.TakeMoneyFromBankAccount(moneyToTakeFrombankAccount);

            //Assert
            //is handled by ExpectedException
        }
        public void AddMoneyToBankaccound_withValidMoney_UpdatesBalance()
        {
            //Arrange
            decimal      beginningBalance = 10m;
            decimal      money            = 1m;
            decimal      expected         = 11m;
            BankRekening bankRekening     = new BankRekening(beginningBalance);

            //Act
            bankRekening.AddMoneyToBankAccount(money);

            //Assert
            decimal actual = bankRekening.Balance;

            Assert.AreEqual(expected, actual, "Balance is incorrect");
        }
        public void TakeMoneyFromBankAccount_WithValidMoney_UpdatesBalance()
        {
            // Arrange
            decimal      beginningBalance           = 500.95M;
            decimal      moneyToTakeFromBankAccount = 100.10M;
            decimal      expected     = 400.85M;
            BankRekening bankRekening = new BankRekening(beginningBalance);

            // Act
            bankRekening.TakeMoneyFromBankAccount(moneyToTakeFromBankAccount);

            // Assert
            decimal actual = bankRekening.Balance;

            Assert.AreEqual(expected, actual, "Balance is incorrect");
        }
        public void AddMoneyToBankAccount_withValueMoney_UpdateBalance()
        {
            //Arrange
            decimal beginningBalance = 500.95m;
            decimal MoneyToAdd       = 12.00m;
            decimal expected         = 512.95m;

            BankRekening bankRekening = new BankRekening(beginningBalance);

            //Act

            bankRekening.AddMoneyToBankAccount(MoneyToAdd);

            //Assert

            decimal actual = bankRekening.Balance;

            Assert.AreEqual(expected, actual, "Balance is incorrect");
        }
        public void TakeMoneyFromBankAccount_WhenMoneyIsMoreThanBalance_ShouldThrowArgumentOutOfRange()
        {
            // arrange
            decimal      beginningBalance           = 11.99M;
            decimal      moneyToTakeFromBankAccount = 20.0M;
            BankRekening bankRekening = new BankRekening(beginningBalance);

            try
            {
                // act
                bankRekening.TakeMoneyFromBankAccount(moneyToTakeFromBankAccount);
            }
            catch (ArgumentOutOfRangeException ex)
            {
                // assert
                StringAssert.Contains(ex.Message, BankRekening.MoneyAmountExceedsBalanceMessage);
                return;
            }
            Assert.Fail("No exception was thrown");
        }
        public void AddMoneyToBankAccount_WhenMoneyIsLessThanZero()
        {
            //Arrange
            try
            {
                decimal beginningBalance = 20.95m;
                decimal MoneyToAdd       = -12.00m;

                BankRekening bankRekening = new BankRekening(beginningBalance);

                //Act
                bankRekening.AddMoneyToBankAccount(MoneyToAdd);
            }
            catch (ArgumentOutOfRangeException ex)
            {
                //Assert
                StringAssert.Contains(ex.Message, BankRekening.MoneyAmountLessThanZeroMessage);
                return;
            }

            Assert.Fail("No exception was thrown.");
        }
        public void TakeMoneyFromBankAccount_WhenMoneyIsMoreThanBalance_ShouldThrowArgumentOutOfRange()
        {
            //Arrange
            decimal      beginningBalance           = 12.00m;
            decimal      moneyToTakeFrombankAccount = 20.00m;
            BankRekening bankRekening = new BankRekening(beginningBalance);

            try
            {
                //Act
                bankRekening.TakeMoneyFromBankAccount(moneyToTakeFrombankAccount);
            }
            catch (ArgumentOutOfRangeException e)
            {
                //Assert
                return;
            }

            Assert.Fail("No exception was thrown.");

            //is handled by ExpectedException
        }