public void ForDate_WithEarlierDateThanFirstBudget_ShouldReturnNull() { BudgetCollection subject = Arrange(); BudgetModel result = subject.ForDate(DateTime.MinValue); Assert.IsNull(result); }
public void ForDate_25_1_2014_ShouldReturnBudget2() { BudgetCollection subject = Arrange(); BudgetModel result = subject.ForDate(new DateTime(2014, 1, 25)); Assert.AreSame(subject.First(b => b.Name == TestDataConstants.Budget2Name), result); }
private static decimal CalculateBudgetedTotalAmount(DateTime beginDate, Func <BudgetModel, decimal> whichBudgetBucket, BudgetCollection budgets, OverallPerformanceBudgetResult result) { if (!result.UsesMultipleBudgets) { return(whichBudgetBucket(budgets.ForDate(beginDate)) * result.DurationInMonths); } decimal budgetedAmount = 0; for (var month = 0; month < result.DurationInMonths; month++) { var budget = budgets.ForDate(beginDate.AddMonths(month)); budgetedAmount += whichBudgetBucket(budget); } return(budgetedAmount); }
private static void CalculateTotalsAndAverage(DateTime beginDate, StatementModel statement, BudgetCollection budgets, OverallPerformanceBudgetResult result) { // First total the expenses without the saved up for expenses. var totalExpensesSpend = statement.Transactions .Where(t => t.BudgetBucket is ExpenseBucket) .Sum(t => t.Amount); var totalSurplusSpend = statement.Transactions .Where(t => t.BudgetBucket is SurplusBucket) .Sum(t => t.Amount); result.AverageSpend = totalExpensesSpend / result.DurationInMonths; // Expected to be negative result.AverageSurplus = totalSurplusSpend / result.DurationInMonths; // Expected to be negative for (var month = 0; month < result.DurationInMonths; month++) { var budget = budgets.ForDate(beginDate.AddMonths(month)); result.TotalBudgetExpenses += budget.Expenses.Sum(e => e.Amount); } result.OverallPerformance = result.AverageSpend + result.TotalBudgetExpenses; }
private static void CalculateTotalsAndAverage(DateTime beginDate, StatementModel statement, BudgetCollection budgets, OverallPerformanceBudgetResult result) { // First total the expenses without the saved up for expenses. var totalExpensesSpend = statement.Transactions .Where(t => t.BudgetBucket is ExpenseBucket) .Sum(t => t.Amount); var totalSurplusSpend = statement.Transactions .Where(t => t.BudgetBucket is SurplusBucket) .Sum(t => t.Amount); result.AverageSpend = totalExpensesSpend / result.DurationInMonths; // Expected to be negative result.AverageSurplus = totalSurplusSpend / result.DurationInMonths; // Expected to be negative for (var month = 0; month < result.DurationInMonths; month++) { var budget = budgets.ForDate(beginDate.AddMonths(month)); result.TotalBudgetExpenses += budget.Expenses.Sum(e => e.Amount); } result.OverallPerformance = result.AverageSpend + result.TotalBudgetExpenses; }
private static decimal CalculateBudgetedTotalAmount(DateTime beginDate, Func<BudgetModel, decimal> whichBudgetBucket, BudgetCollection budgets, OverallPerformanceBudgetResult result) { if (!result.UsesMultipleBudgets) { return whichBudgetBucket(budgets.ForDate(beginDate)) * result.DurationInMonths; } decimal budgetedAmount = 0; for (var month = 0; month < result.DurationInMonths; month++) { var budget = budgets.ForDate(beginDate.AddMonths(month)); budgetedAmount += whichBudgetBucket(budget); } return budgetedAmount; }