public void TestGetMiniStatement() { ReadifyBank testBank = new ReadifyBank(); // Test for an account only have one transaction IAccount jill = testBank.OpenHomeLoanAccount("Jill"); testBank.PerformDeposit(jill, 100, "deposit 100."); IEnumerable <IStatementRow> miniStatementForJill = testBank.GetMiniStatement(jill); Assert.Equal(1, miniStatementForJill.Count()); Assert.Equal(100, miniStatementForJill.ToList()[0].Balance); // Test normal circumstances IAccount john = testBank.OpenHomeLoanAccount("John"); IAccount jack = testBank.OpenSavingsAccount("Jack"); foreach (int i in Enumerable.Range(1, 20)) { decimal depositAmount = (decimal)(i * 100); testBank.PerformDeposit(john, depositAmount, string.Format("deposit {0}.", depositAmount)); testBank.PerformDeposit(jack, depositAmount, string.Format("deposit {0}.", depositAmount)); } IEnumerable <IStatementRow> miniStatementForJohn = testBank.GetMiniStatement(john); Assert.Equal(5, miniStatementForJohn.Count()); decimal johnBalance = 12000; foreach (int i in Enumerable.Range(0, 5)) { Assert.Same(john, miniStatementForJohn.ToList()[i].Account); decimal amount = (16 + i) * 100; johnBalance += amount; Assert.Equal(amount, miniStatementForJohn.ToList()[i].Amount); Assert.Equal(johnBalance, miniStatementForJohn.ToList()[i].Balance); } // Test for invalid account IEnumerable <IStatementRow> miniStatementForNotExist = testBank.GetMiniStatement(null); Assert.Null(miniStatementForNotExist); }
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); } }