public void TestPerformTransfer() { ReadifyBank testBank = new ReadifyBank(); IAccount john = testBank.OpenHomeLoanAccount("John"); IAccount jack = testBank.OpenSavingsAccount("Jack"); testBank.PerformDeposit(john, 200, "deposit 200."); // Test for invalid recipient account testBank.PerformTransfer(john, null, 100, "Tranfer 100."); Assert.Equal(200, john.Balance); Assert.Equal(1, testBank.TransactionLog.Count); // Test for invlaid payer account testBank.PerformTransfer(null, john, 100, "Tranfer 100"); Assert.Equal(200, john.Balance); Assert.Equal(1, testBank.TransactionLog.Count); // Test for nomal circumstances testBank.PerformTransfer(john, jack, 100, "Tranfer 100 to jack."); Assert.Equal(100, john.Balance); Assert.Equal(100, jack.Balance); Assert.Equal(3, testBank.TransactionLog.Count); }
static void Main(string[] args) { ReadifyBank bank = new ReadifyBank(); IAccount john = bank.OpenSavingsAccount("John"); IAccount jack = bank.OpenHomeLoanAccount("Jack"); foreach (int i in Enumerable.Range(1, 9)) { bank.OpenSavingsAccount("SCVustomer"); bank.OpenHomeLoanAccount("LNCustomer"); } Console.WriteLine(string.Format("After open 20 account. Total account number: {0}\n", bank.AccountList.Count)); showCustomerInfo(john, bank); showCustomerInfo(jack, bank); foreach (int i in Enumerable.Range(1, 10)) { bank.PerformDeposit(john, 100, "deposit 100"); bank.PerformDeposit(jack, 50, "deposit 50"); } Console.WriteLine("After deposit:"); showCustomerInfo(john, bank); showCustomerInfo(jack, bank); foreach (int i in Enumerable.Range(1, 10)) { bank.PerformWithdrawal(john, 20, "withdraw 20"); bank.PerformWithdrawal(jack, 10, "withdraw 10"); } Console.WriteLine("After withdrawal:"); showCustomerInfo(john, bank); showCustomerInfo(jack, bank); bank.PerformTransfer(john, jack, 50, "lunch fee."); Console.WriteLine("After John transfer 50 to Jack:"); showCustomerInfo(john, bank); showCustomerInfo(jack, bank); Console.WriteLine("When John transfor amount exceeds balance:"); bank.PerformTransfer(john, jack, 800, "bill."); showCustomerInfo(john, bank); showCustomerInfo(jack, bank); Console.WriteLine("Calculate interest for 60 days for John and Jack:"); DateTimeOffset toDate = DateTimeOffset.Now.LocalDateTime.AddDays(60); decimal interestForJohn = bank.CalculateInterestToDate(john, toDate); decimal interestForJack = bank.CalculateInterestToDate(jack, toDate); Console.WriteLine(string.Format("The interest for John to 60 days later is: {0:C4}", interestForJohn)); Console.WriteLine(string.Format("The interest for Jack to 60 days later is: {0:C4}\n", interestForJack)); IEnumerable <IStatementRow> miniStatementOfJohn = bank.GetMiniStatement(john); IEnumerable <IStatementRow> miniStatementOfJack = bank.GetMiniStatement(jack); Console.WriteLine("Mini statement of John:"); foreach (IStatementRow transaction in miniStatementOfJohn) { showTransactionInfo(transaction, bank); } Console.WriteLine("\nMini statement of Jack:"); foreach (IStatementRow transaction in miniStatementOfJack) { showTransactionInfo(transaction, bank); } Console.WriteLine("\nNow close the account John:"); IEnumerable <IStatementRow> allTransactionOfJohn = bank.CloseAccount(john); foreach (IStatementRow transaction in allTransactionOfJohn) { showTransactionInfo(transaction, bank); } }